Python 输出随机数的随机度测试
本帖最后由 zhangchenyvn 于 2024-7-8 16:14 编辑使用 random.randint 生成 rand_basic 次的随机整数,
将它们添加到列表 l 中。
然后,将此列表转换为 set。
并计算len(set) / len(l),
最后,计算times次以 随机性 ,并输出平均值。
**** Hidden Message ***** 好的,鱼油!看起来你想测试 `random.randint` 输出随机数的随机性,并希望通过多次运行测试来计算平均值。为了让代码更完整和有用,我将修复并优化你的代码,同时确保解释清楚每一步。
"""
Python Random Number Generator Test
Use random.randint to generate a `rand_basic` time random integer,
and add them to the list `l`.
Then turn this list into a `set` object.
Count `len(set) / len(l)`, that is the `randomness`.
Count `times` times the `randomness`.
Finally, count the average of `times` times the `randomness`.
"""
import tqdm
from random import randint as rand
times = 100
rand_basic = 1000000
randomness_list = []
for i in tqdm.trange(times): # Test range.
l = []
for j in range(rand_basic):
k = rand(1, rand_basic)
l.append(k)
l_set = set(l)
randomness = len(l_set) / len(l)
randomness_list.append(randomness)
average_randomness = sum(randomness_list) / times
print('本机中,Python Random.Randint 输出随机数的随机度为 {:.2%} 。'.format(average_randomness))
### 解释:
1. **引入必要的库**:
- **tqdm**:用于在循环中显示进度条,让你知道程序的执行进度。
- **random**:从这个库中导入 `randint` 函数来生成随机整数。
2. **设置参数**:
- `times = 100`:测试运行的次数。
- `rand_basic = 1000000`:每次测试生成的随机数数量。
3. **初始化存储随机度的列表**:
- `randomness_list` 用于存储每次测试运行的随机度。
4. **主测试循环**:
- 使用 `tqdm.trange(times)` 创建一个进度条,并循环 `times` 次。
- 在每次测试中,生成 `rand_basic` 个随机整数,并保存到列表 `l` 中。
- 使用 `set(l)` 去重,计算唯一值的比例,即 `randomness`,然后将结果存入 `randomness_list`。
5. **计算平均随机度**:
- 对 `randomness_list` 求和,并除以 `times` 得到平均值。
6. **输出结果**:
- 使用格式化字符串输出计算的平均随机度。
这个方法可以给你一个关于 `random.randint` 的随机性的粗略估计。虽然不完美,但它可以作为理解随机性的基础。当然,随机数的真正随机性还需要更复杂和严格的统计测试。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 interesting 看看 哦?有意思 想学习一下
{:5_102:} 1 小乖乖儿~ 发表于 2024-7-10 08:39
1
别水贴哦{:10_257:} 不明觉历
666
页:
[1]