普通の電卓で乱数もどきを作る


100円ショップで売っていそうな普通の電卓を使って 乱数のようなものを作るには....
(すごろくをするときに,サイコロが見付からないけど電卓はある, というような「遊び」の話しです。 )


掛け算と引き算だけで作ってみる :

ベルヌーイシフト (Bernoulli shift) (または2進変換)と呼ばれる写像 (解説は例えば ここにある) の考え方を使って,
[1] 初期値を入力。(例えば 1 でよい。)
[2] 2 を掛ける。(2倍する。)
[3] 答えが 101 より大きければ 101 を引く。
[2] と [3] を繰り返せば,1 から 100 までの数が
1, 2, 4, 8, 16, 32, 64, 27, 54, 7, 14, 28, 56, 11, 22, 44, 88, 75, 49,
98, 95, 89, 77, 53, 5, 10, 20, 40, 80, 59, 17, 34, 68, 35, 70, 39, 78,
55, 9, 18, 36, 72, 43, 86, 71, 41, 82, 63, 25, 50, 100, 99, 97, 93, 85,
69, 37, 74, 47, 94, 87, 73, 45, 90, 79, 57, 13, 26, 52, 3, 6, 12, 24,
48, 96, 91, 81, 61, 21, 42, 84, 67, 33, 66, 31, 62, 23, 46, 92, 83, 65,
29, 58, 15, 30, 60, 19, 38, 76, 51, 1, ....
のようにそこそこランダムに出てきます。
さらにランダム性を増すには,[2]と[3]を何回か繰り返したのを 1回と数えればよい。 例えば,[2]と[3]を19回繰り返して1回とする場合,
1, 98, 9, 74, 81, 60, 22, 35, 97, 12, 65, 7, 80, 63, 13, 62, 16, 53, 43,
73, 84, 51, 49, 55, 37, 91, 30, 11, 68, 99, 6, 83, 54, 40, 82, 57, 31,
8, 77, 72, 87, 42, 76, 75, 78, 69, 96, 15, 56, 34, 100, 3, 92, 27, 20,
41, 79, 66, 4, 89, 36, 94, 21, 38, 88, 39, 85, 48, 58, 28, 17, 50, 52,
46, 64, 10, 71, 90, 33, 2, 95, 18, 47, 61, 19, 44, 70, 93, 24, 29, 14,
59, 25, 26, 23, 32, 5, 86, 45, 67, 1, ...
となります。

サイコロの代わりにするには, 1の位または10の位の数字をサイコロの目とする。
(0, 7, 8, 9 になってしまった場合は次の数へ行く。)


101 を引く,というのがミソ。100 だとあまり良くない。 ちょっとした考察
なお,ベルヌーイシフトを素直に定式化して, (2進数の)コンピュータで浮動小数点で計算すると, 誤差が蓄積してうまく計算出来ないので注意。


他の方法 :

any suggestions ?

√(ルート)のキーとか使えそうだけど....なかなかうまく行かない。

t-kita homepage