一、结果
目标:输入的自变量越小,随机数在指定区间[30,181]的取值越大,而输入的自变量越大,随机数在指定区间[30,181]的取值越小
结果:



二、目标
希望随机数的权重随着外部输入的变量的大小进行调整,如果外部输入的变量越小则随机数在自己指定的区间即【30,181】中的权重呈现递增趋势,从结果来看就是在指定的区间即【30,181】取值大的概率更大;如果外部输入的变量越大则随机数在自己指定的区间即【30,181】中的权重呈现递减趋势,从结果来看就是在指定的区间即【30,181】取值小的概率更大
三、难点
此处的难点无疑在于权重参数的变动,一般的权重随机数都是
import random
import numpy as np
random.choices(list,weights=)#其中list为需要随机抽取的列表,而weights为权重,权重一般也是一个列表
#实例
list_ = [i for i in range(3,10)
weight = np.random.randint(1,2,7)
random.choices(list,weights=)

由于权重都为1,即抽取概率一样,所以大体上次数是相当的
四、解决
def data_random_margin(x):
list_math = [i for i in range(30,181)]
if x < 2/11:
wieght = np.random.randint(1, 2, 151)
list_math_split_1 = wieght[:75]
list_math_copy_1 = []
list_math_split_2 = wieght[75:]
list_math_copy_2 = []
for i,content in enumerate(list_math_split_1):
content = float(content)
list_math_copy_1.append(content)
#print(list_math_copy_1)
for i ,content in enumerate(list_math_split_2):
content = content + x* i
list_math_copy_2.append(content)
wieght_ = list_math_copy_1+list_math_copy_2
#print(wieght_)
data = random.choices(list_math, weights=wieght_)
return data[0]
elif x == 2/11:
wieght = np.random.randint(1,2,151)
data = random.choices(list_math,weights=wieght)
return data[0]
elif x>2/11:
wieght = np.random.randint(1, 2, 151)
list_math_split_1 = wieght[:75]
list_math_copy_1 = []
list_math_split_2 = wieght[75:]
list_math_copy_2 = []
for i, content in enumerate(list_math_split_1):
content = content + x* i
list_math_copy_1.append(content)
for i, content in enumerate(list_math_split_2):
content = float(content)
list_math_copy_2.append(content)
list_math_copy_1 = sorted(list_math_copy_1,reverse=True)
wieght_ = list_math_copy_1 + list_math_copy_2
#print(wieght_)
data = random.choices(list_math, weights=wieght_)
return data[0]
此处需要调整的就是外部变量的影响因子的设定,我在此处用的是
content + x* i
即通过中位数向两边扩散,离中位数越远的权重越小,当然我这里没有完全的实行,而是x < 2/11则权重列表左边不变,而右边进行递增;x > 2/11则权重列表右边不变,而左边进行递增
通过对于那边的增量控制实现权重控制,进而控制随机数的抽取概率
最后结果:
x = 1/11时:

x == 2/11时:


x>2/11时:x=4/11


从前后数字出现的次数以及相邻数字之间可以看出,基本实现了相应的目标,只是相应的权重的比值需要进行微调

本文探讨了如何根据外部变量调整权重随机数的抽取概率,实现输入变量小时,指定区间内大数值权重增加,反之亦然。通过算法设计,解决了权重参数随变量变化的难题。
771

被折叠的 条评论
为什么被折叠?



