python - 如何在 python 中获得更好的随机数?
问题描述
为了测试python生成的数字有多随机,我写了这个:
import random
l=[]
lshuf=[]
for x in range(0,101):
lshuf.append(x)
for x in range (0,100000):
l.append(lshuf[random.randrange(0,101)])
l2=[]
for x in range(0,101):
l2.append(0)
for x in l:
l2[l[x]]+=1
基本上它会生成 0 到 100 之间的 100,000 个随机数,并将 0 到 100 之间的数字出现在列表中的次数。当它打印出一个列表时,显示如下:
[0, 947, 2018, 1961, 0, 990, 1994, 0, 934, 0, 0, 976, 0, 0, 967, 1024, 2025, 2009, 2990, 949, 0, 4961, 0, 0, 1037, 951, 1998, 0, 2002, 3076, 0, 0, 0, 2086, 0, 2926, 0, 936, 996, 0, 995, 1010, 0, 0, 1004, 0, 0, 0, 0, 0, 1004, 0, 2909, 1990, 1955, 4833, 0, 1001, 0, 0, 0, 0, 2928, 0, 1976, 1018, 0, 1985, 996, 958, 3005, 0, 1918, 988, 976, 0, 3057, 0, 1010, 988, 0, 1860, 1026, 0, 945, 0, 0, 0, 1988, 999, 1871, 1034, 2976, 1010, 0, 1994, 0, 0, 983, 3026, 1031]
如果它真的是随机的,那么所有项目都不会出现零,它们大多在 500 到 1500 之间。我怎样才能生成更好的随机数?
解决方案
你的测试不正确。
for x in l:
l2[l[x]]+=1
应该:
for x in l:
l2[x]+=1
l[x]
仅从您的 100,000 个号码中的前 100 个中抽取样本。
这是一个简化的测试:
import random
from collections import Counter
c = Counter()
for _ in range(100000):
c[random.randrange(101)] += 1
result = dict(sorted(c.items()))
# >>> print(result)
# {0: 936, 1: 1011, 2: 989, 3: 1005, 4: 1036, 5: 992, 6: 1013, 7: 1008, 8: 983, 9: 987, 10: 982, 11: 991, 12: 986, 13: 973, 14: 973, 15: 988, 16: 952, 17: 1025, 18: 958, 19: 989, 20: 984, 21: 934, 22: 997, 23: 960, 24: 989, 25: 1005, 26: 1006, 27: 1019, 28: 1000, 29: 1003, 30: 1007, 31: 993, 32: 996, 33: 993, 34: 1010, 35: 1041, 36: 955, 37: 965, 38: 991, 39: 995, 40: 1036, 41: 967, 42: 1013, 43: 957, 44: 930, 45: 1037, 46: 1031, 47: 1017, 48: 1050, 49: 1005, 50: 954, 51: 968, 52: 1010, 53: 984, 54: 1012, 55: 1017, 56: 980, 57: 928, 58: 976, 59: 968, 60: 970, 61: 1011, 62: 949, 63: 1018, 64: 982, 65: 990, 66: 1011, 67: 985, 68: 1001, 69: 964, 70: 957, 71: 977, 72: 1007, 73: 1028, 74: 1049, 75: 930, 76: 949, 77: 998, 78: 981, 79: 1001, 80: 1000, 81: 976, 82: 1064, 83: 994, 84: 993, 85: 999, 86: 1007, 87: 1021, 88: 958, 89: 957, 90: 989, 91: 990, 92: 990, 93: 992, 94: 1027, 95: 973, 96: 907, 97: 973, 98: 944, 99: 979, 100: 1049}
推荐阅读
- ios - SwiftUI NavigationLink 从不释放内存
- python - 通过 Python 运行 SAS 代码以登录到特定的 SAS 数据库
- c# - 网络应用程序中的 Cookie 被删除
- swift - selectItem 时的集合视图布局错误(Swift 5)
- swift - 在 String 中创建 NSRange 时崩溃
- php - 默认情况下,如何在 unirest for php 中将响应主体类型 stdObject 更改为关联数组
- xcode - 在 Xcode 中运行的 Build 和 Build 有什么区别
- firebase - Getter uid 在 Flutter Fire 中被调用为 null
- python - 无法让 Selenium WebDriver 在 Mac 上工作
- angular - 角度 6 到 8,角度通用,请通过“文件”或“包含”属性确保它在您的 tsconfig 中