gpt4 book ai didi

python - 我应该如何从基于 PRNG 的生成转向基于哈希的过程生成?

转载 作者:行者123 更新时间:2023-12-01 02:30:52 25 4
gpt4 key购买 nike

我想用基于哈希的数据生成器替换现有的基于随机数的数据生成器(Python),这样它就不再需要按顺序生成所有内容,灵感来自 this article .

我可以通过获取哈希的整数版本并将其除以哈希的最大值来创建从 0 到 1 的 float 。

我可以通过取 float 并乘以平坦范围来创建平坦整数范围。我可能可以使用模并忍受偏差,因为哈希范围很大,而我的平坦范围很小。

如何使用哈希来创建高斯或正态分布浮点值?

对于所有这些情况,我是否最好仅使用我的哈希作为新 random.Random 对象的种子并使用该类中的函数来生成我的数字并依靠它们来获得正确的分布特征?

目前,我的代码结构如下:

num_people = randint(1,100)
people = [dict() for x in range(num_people)]
for person in people:
person['surname'] = choice(surname_list)
person['forename'] = choice(forename_list)

问题是,为了使给定的种子保持一致,我必须以相同的顺序生成所有的人,并且必须先生成姓氏,然后生成名字。如果我在两者之间添加一个中间名,那么生成的名字将会改变,所有后续人的所有名字也会改变。

我想像这样构造代码:

h1_groupseed=1

h2_peoplecount=1
h2_people=2

h4_surname=1
h4_forename=2

num_people = pghash([h1_groupseed,h2_peoplecount]).hashint(1,100)
people = [dict() for x in range(num_people)]
for h3_index, person in enumerate(people,1):
person['surname'] = surname_list[pghash([h1_groupseed,h2_people,h3_index,h4_surname]).hashint(0, num_of_surnames - 1)]
person['forename'] = forename_list[pghash([h1_groupseed,h2_people,h3_index,h4_forename]).hashint(0, num_of_forenames - 1)]

这将使用传递给 pghash 的值来生成哈希,并使用该哈希以某种方式创建伪随机结果。

最佳答案

首先,一个重要的警告:不要使用自己的加密货币。如果您出于安全目的尝试这样做,请不要这样做。

接下来,查看这个问题,其中列出了几种执行您想要的操作的方法,即将随机均匀变量转换为正常变量: Converting a Uniform Distribution to a Normal Distribution

关于python - 我应该如何从基于 PRNG 的生成转向基于哈希的过程生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46831581/

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