gpt4 book ai didi

Python - 在具有步长的范围之间生成随机实数

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:03 26 4
gpt4 key购买 nike

我正在使用 python-3.x,我正在尝试生成一个包含 0 到 1 之间的随机实数的初始种群,其中这些数字应该是以下之一:0、0.33333、0.666667 或 1

这意味着这些数字之间的差异是 0.33333 (1/3)。我尝试以多种方式修改此代码,但他们没有运气

import numpy as np
import random
from random import randint
from itertools import product
pop_size = 7
i_length = 2
i_min = 0
i_max = 1
level = 2
step = ((1/((2**level)-1))*(i_max-i_min))

def individual(length, min, max):
return [ randint(min,max) for x in range(length) ]
def population(count, length, min, max):
return [ individual(length, min, max) for x in range(count) ]

population = population(pop_size, i_length, i_min, i_max)

##count: the number of individuals in the population
##length: the number of values per individual
##min: the minimum possible value in an individual's list of values
##max: the maximum possible value in an individual's list of values
##this code was taken from :https://lethain.com/genetic-algorithms-cool-name-damn-simple/

我做了这行,对我来说效果很好:

population2 = np.array(list(product(np.linspace(i_min, i_max, 2**level), repeat=2)))
population3 = [j for j in product(np.arange(i_min, i_max+step, step), repeat=2)]

但问题是它将列出所有不是我想要的可能值。我想要给出人口规模的随机数

我想看到的结果是 smailar 到(numpy 数组或列表):

population = [[0, 1],
[0, 0.3333],
[0.3333, 1],
[1, 0.6667],
[0.3333, 0.6667],
[0.6667, 0],
[0.3333, 0.3333]]

请记住:

level = 2

我可以在哪里计算步长值:

step = ((1/((2**level)-1))*(i_max-i_min))

例如,如果我将 level = 2 更改为 level = 3 那么它不再使用 0.3333 它将更改为 0.1428 1/7) 我会得到不同的值。

任何建议将不胜感激

最佳答案

>>> np.random.choice([0, 1/3., 2/3., 1], size=(7,2), replace=True)
array([[0. , 0.33333333],
[0.33333333, 0.66666667],
[0. , 0. ],
[0.66666667, 0. ],
[0.33333333, 0.33333333],
[1. , 1. ],
[0.33333333, 0.33333333]])


>>> i_min = 0
>>> i_max = 1
>>> level = 3
>>> np.random.choice(np.linspace(i_min, i_max, 2**level), size=(7,2), replace=True)
array([[0.28571429, 0.14285714],
[0.85714286, 0.57142857],
[0.71428571, 0.42857143],
[0.71428571, 1. ],
[0.14285714, 0.85714286],
[0. , 0. ],
[1. , 0. ]])

关于Python - 在具有步长的范围之间生成随机实数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com