1 回答

TA貢獻1829條經驗 獲得超4個贊
您在問題中遺漏了可能至關重要的細節(jié)。
您的 bin 大小是多少(即,您在 [0,1]、[0,20] 或 [0,1M] 之間是否有 1M 的 bin)..?您的性能要求是什么,對于您的目的來說什么是“慢”?您是否遇到了內存限制、CPU 使用限制或其他問題?
一個簡單的解決方案是使用random.random()在 [0,1] 之間生成一個隨機數(shù),然后使用乘法/加法在您需要的任何間隔內進行采樣。
以下代碼采樣了 1M 個 bin,每個 bin 大小為 1,每個 bin 包含 2 個數(shù)字。
import random
hist_data = []
in_each_bin = 2
for i in range(1000000):
for j in range(in_each_bin):
hist_data.append(i+random.random())
print(len(hist_data))
print(hist_data[0:20])
它在我的中型機器上運行不到 3 秒。
$ time python3 pytest.py
2000000
[0.9271533001749838, 0.6759096885597532, 1.0950935186564377, 1.4195955772696995, 2.620307487968376, 2.535700184898931, 3.606823695579621, 3.5471311130365346, 4.01255833303964, 4.013715023517034, 5.42988725471679, 5.257435390135351, 6.681956593279519, 6.686189487682324, 7.916591795688389, 7.598478524938438, 8.309152266029844, 8.997231092516385, 9.801082205541228, 9.198095437802664]
real 0m3.418s
user 0m2.547s
sys 0m0.500s
這是否符合您的需要和要求?
添加回答
舉報