亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么使用 Numba xoroshiro128p 得到與隨機數組相同的數字?

為什么使用 Numba xoroshiro128p 得到與隨機數組相同的數字?

紫衣仙女 2023-07-05 10:04:11
為什么我使用 Numba 得到與隨機數組相同的數字xoroshiro128p?我想要與 Numpy 隨機數組相同np.random.rand。from numba import cudafrom numba.cuda.random import create_xoroshiro128p_states, xoroshiro128p_uniform_float32import numpy as [email protected] rand_array(rng_states, out):    thread_id = cuda.grid(1)    x = xoroshiro128p_uniform_float32(rng_states, thread_id)    out[thread_id] = xthreads_per_block = 4blocks = 3 rng_states = create_xoroshiro128p_states(threads_per_block * blocks, seed=1)out = np.zeros(threads_per_block * blocks, dtype=np.float32)rand_array[blocks, threads_per_block](rng_states, out)rar = np.random.rand(12).reshape(blocks, threads_per_block)print(out.reshape(blocks,threads_per_block))print()print(rar.reshape(blocks,threads_per_block))每次運行它時,我都會看到相同的數字。但np.random.rand效果很好。預先感謝您的幫助!
查看完整描述

1 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

發送種子=1,幾乎可以肯定意味著隨機數生成器(畢竟只是一個復雜的算法)在序列中完全相同的位置開始。因此生成相同的隨機數序列。

以完全可預測的方式生成相同序列的能力在測試中非常有用,但在生產環境中,您需要更不可預測的種子

嘗試 :

rng_states = create_xoroshiro128p_states(threads_per_block * blocks, seed=time.time())

由于時鐘時間是不可預測的,因此序列將從不同的點開始生成,并且 rng_states 將遠不可預測。顯然,您需要import time在腳本開始時這樣做。顯然,這意味著您的代碼現在每次都會生成一個隨機序列,這將使測試變得困難。


查看完整回答
反對 回復 2023-07-05
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號