モジュール
線形帰還シフトレジスタ †
疑似乱数を線形帰還シフトレジスタで生成します
ウィンドウハンドルで初期化しています。
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万ループぐらいみたいです。
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
repeat 1000000
i = rand(sx),rand(sy) pset i,i.1
if cnt\10000=0:title""+cnt:wait 1
wait 0
loop
cls
x = sx/2
y = sy/2
repeat
i = rand(4) 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
|