我想在JavaScript中創建一個隨機布爾值,但我想考慮前面的值。如果以前的值是真的,我希望它更可能是下一個值爲真。目前,我有這個(這是一個封閉的環境 - goUp
和lastGoUp
是當地人包含範圍內):優化隨機布爾值的方法
function setGoUp() {
goUp = getRandomBoolean();
if(lastGoUp) {
goUp = getRandomBoolean() || goUp;
}
else {
goUp = getRandomBoolean() && goUp;
}
lastGoUp = goUp;
}
所以,算法變爲:
- 得到一個隨機布爾
如果從以前的電話隨機布爾是真實的:
一)得到另一個隨機布爾和
or
這兩個一起b)else獲得另一個隨機布爾值和
and
這些在一起。
我相信這個算法可以簡化。我想知道如何做:
if(lastGoUp && goUp) {
goUp = goUp * (getRandomBoolean() || goUp);
}
但這似乎真的很髒。
這個算法也有問題,這意味着我只能再次獲得相同布爾值的機會 - 我無法輕鬆調整它。有任何想法嗎?
當然!我並沒有以任何偏見開始,所以我試圖找出如何偏好已有的布爾值。謝謝:) – Skilldrick 2010-09-05 12:22:53
順便說一句,我決定去'< 0.8' and '> 0.8'因爲這對我來說更有意義。把0.8變成一個命名常量也是更清楚的。 – Skilldrick 2010-09-05 12:53:21
'GetRandomFloatBetween0And1'(也就是''0,1''的區間)就是'Math.random()'的作用。 – 2017-07-30 14:40:11