用JavaScript寫了一個Scrambler - 魔術方塊

Table of Contents

※ 引述《ten7728 (今古庸龍)》之銘言:
: x=Math.round(Math.random()*6)

Math.random() 產生出來的是範圍落在 [0,1) 之間的浮點亂數,
因此如果你將它乘以 6 再用 round(四捨五入)的話,
其實機率分佈會是 (0,1,2,3,4,5,6) 分別以 (1,2,2,2,2,2,1) 的比例出現,
換句話說 6 出現的機率只有 1~5 的一半,我相信這不是你要的。

因此你應該把這行改成:

x=Math.ceil(Math.random()*6);

這麼一來就會是均勻的 1~6 之亂數。

--
錢,真的是萬能的。

——如果你不這麼覺得的話,那只是因為你的錢還不夠多而已。

--

All Comments

Andy avatarAndy2009-03-06
或者不適用四捨五入,而是無條件捨去取整數?
Bennie avatarBennie2009-03-09
當然也可以,就看最後需要的亂數範圍是在哪裡
Genevieve avatarGenevieve2009-03-13
只不過那樣做的結果會使得 0 出現的機率在理論上變高
Charlie avatarCharlie2009-03-14
雖然變高的幅度微乎其微(即浮點數的最高精度)
Bennie avatarBennie2009-03-16
參考我的 #19Ci1z7x XD 到底有幾種語言的SCer
Rebecca avatarRebecca2009-03-17
推星君