Randomness
0 到 1 之間的隨機數 - 快速的小問題
我知道隨機數這個話題已經被討論過很多次了,但我有一個小問題。
我需要盡可能簡單地獲得一個偽隨機數(不是 ungamealbe)。問題是我需要數字為 1 或 0,並且我希望該值能夠在每次循環迭代中為奇數或偶數。
如果我使用類似的東西:
while(x < 10) { uint randomNumberBetween0And1 = uint(keccak256(abi.encodePacked(block.difficulty, now))) % 2; x++; }
該值將是 10 乘以 0(每次迭代中為 0,因為隨機數是偶數)或 10 x 1(因為隨機數每次都是奇數)。如何使迭代之間的隨機數不同?
試試這個:
while(x < 10) { uint rnd = uint(keccak256(block.difficulty, now, x)) & uint(0x1); x++; }
或者,如果您有
while(true)
上面寫的:uint x = 0; while(true) { uint rnd = uint(keccak256(block.difficulty, now, x++)) & uint(0x1); ...YOUR CODE HERE hopefully with a condition for break... }