ブログ - 乱数
コンピュータでゲームを作ったりするときに,乱数の関数を使う.シューティングゲームなどで,同じパターンで出現すると脳が学習し,ゲームがすぐ飽きられてしまうので偶然性を出すために乱数でパラメータを与えている.
その乱数だけれど,NECのN88-BasicだとRND()という関数だった.RND(1)を設定すると乱数が発生するのだけど,なんどやっても同じパターンでしか乱数が発生しない...
そんな時にはRANDOMIZEという命令を実行すると,発生するにタネを与えて,毎回違う乱数値になるようにできる.でもタネといってもコンピュータが持っているタイマーの1秒〜60までの60パターン程度.今だったら,フルサイズの年月日秒を与えたりそれ以上にIPアドレス,MACアドレス色々とあるので,乱数が乱数らしく出てくるはず.
PC-8801に搭載されていたN88-BASICはMicrosoft製品だけれど,Windows 10の乱数生成の擬似乱数生成器について,ホワイトペーパが公開されているとMicrosoftのブログにあった.
Going in-depth on the Windows 10 random number generation infrastructure
英文で読み応えがあるので時間おあるときにでも是非.
その乱数だけれど,NECのN88-BasicだとRND()という関数だった.RND(1)を設定すると乱数が発生するのだけど,なんどやっても同じパターンでしか乱数が発生しない...
そんな時にはRANDOMIZEという命令を実行すると,発生するにタネを与えて,毎回違う乱数値になるようにできる.でもタネといってもコンピュータが持っているタイマーの1秒〜60までの60パターン程度.今だったら,フルサイズの年月日秒を与えたりそれ以上にIPアドレス,MACアドレス色々とあるので,乱数が乱数らしく出てくるはず.
PC-8801に搭載されていたN88-BASICはMicrosoft製品だけれど,Windows 10の乱数生成の擬似乱数生成器について,ホワイトペーパが公開されているとMicrosoftのブログにあった.
Going in-depth on the Windows 10 random number generation infrastructure
英文で読み応えがあるので時間おあるときにでも是非.