hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
Module/線形帰還シフトレジスタ - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

モジュール

線形帰還シフトレジスタ

疑似乱数を線形帰還シフトレジスタで生成します

ウィンドウハンドルで初期化しています。

  1
  2
  3
  4
  5
  6
 
 
 
 
 
 
#module LFSR
#defcfunc rand int p1
    a ^= a >> 9 ^ a << 1
    return (a & $7FFFFFFF) \ p1
#global
a@LFSR = hwnd

簡単に検証してみる

test2でのHSP標準の周期は30万ループぐらいみたいです。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
-
-
!
 
 
 
 
#module LFSR
#defcfunc rand int p1
    a ^= a >> 9 ^ a << 1
    return (a & $7FFFFFFF) \ p1
#global
a@LFSR = hwnd
/////////////////////////
#define sx 700
#define sy sx
 
randomize
screen 0,sx,sy
//test1@@画面上のどこかに点を打ち続けます
repeat 1000000
    i = rand(sx),rand(sy)  //線形帰還シフトレジスタ
    ;i = rnd(sx),rnd(sy)  //HSP標準
    pset i,i.1
    if cnt\10000=0:title""+cnt:wait 1
    wait 0
loop
cls
x = sx/2
y = sy/2
//test2@@中央から四方向に移動します>画面を超えたら中央に戻します
repeat
    i = rand(4)  //線形帰還シフトレジスタ
    ;i = rnd(4)  //HSP標準
          if i = 0{ x--:if x < 0 : x = sx/2
    }else:if i = 1{ x++:if x > sx: x = sx/2
    }else:if i = 2{ y--:if y < 0 : y = sy/2
    }else:          y++:if y > sy: y = sy/2
    pset x,y
    if cnt\10000=0:title""+cnt:wait 1
    wait 0
loop

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2010-06-23 (水) 11:42:16 (1264d)