Knuth shuffle: Difference between revisions
Content added Content deleted
imported>SamTheTomato (→C++: Added empty vector check to prevent unsigned overflow.) |
(Added Chipmunk Basic, GW-BASIC and Minimal BASIC) |
||
Line 1,079: | Line 1,079: | ||
200 FOR I = 1 TO 25 |
200 FOR I = 1 TO 25 |
||
210 PRINT A(I);" ";: NEXT I |
210 PRINT A(I);" ";: NEXT I |
||
220 END |
220 END</syntaxhighlight> |
||
⚫ | |||
{{out}} |
{{out}} |
||
<pre>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 |
<pre>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 |
||
Line 1,101: | Line 1,100: | ||
NEXT I% |
NEXT I% |
||
PRINT</syntaxhighlight> |
PRINT</syntaxhighlight> |
||
==={{header|Chipmunk Basic}}=== |
|||
{{works with|Chipmunk Basic|3.6.4}} |
|||
The [[#GW-BASIC|GW-BASIC]] solution works without any changes. |
|||
==={{header|GW-BASIC}}=== |
|||
{{works with|PC-BASIC|any}} |
|||
{{works with|BASICA}} |
|||
{{works with|Chipmunk Basic}} |
|||
<syntaxhighlight lang="qbasic">100 CLS |
|||
110 RANDOMIZE TIMER |
|||
120 DIM CARDS(51) |
|||
130 PRINT "before:" |
|||
140 FOR L0 = 0 TO 51 |
|||
150 CARDS(L0) = L0 |
|||
160 PRINT STR$(CARDS(L0));" "; |
|||
170 NEXT L0 |
|||
180 FOR L0 = 51 TO 0 STEP -1 |
|||
190 CARD = INT(RND(1)*(L0+1)) |
|||
200 IF CARD <> L0 THEN T = CARDS(CARD) : CARDS(CARD) = CARDS(L0) : CARDS(L0) = T |
|||
210 NEXT L0 |
|||
220 PRINT : PRINT |
|||
230 PRINT "after:" |
|||
240 FOR L0 = 0 TO 51 |
|||
250 PRINT STR$(CARDS(L0));" "; |
|||
260 NEXT L0 |
|||
270 PRINT |
|||
280 END</syntaxhighlight> |
|||
==={{header|IS-BASIC}}=== |
==={{header|IS-BASIC}}=== |
||
Line 1,127: | Line 1,154: | ||
320 NEXT |
320 NEXT |
||
330 END DEF</syntaxhighlight> |
330 END DEF</syntaxhighlight> |
||
==={{header|Minimal BASIC}}=== |
|||
<syntaxhighlight lang="qbasic">100 REM Knuth shuffle |
|||
110 RANDOMIZE |
|||
120 DIM B(51) |
|||
130 PRINT "BEFORE:" |
|||
140 FOR L0 = 0 TO 51 |
|||
150 LET B(L0) = L0 |
|||
160 PRINT B(L0);" "; |
|||
170 NEXT L0 |
|||
180 FOR L0 = 51 TO 0 STEP -1 |
|||
190 LET C = INT(RND*(L0+1)) |
|||
200 IF C <> L0 THEN 220 |
|||
210 GOTO 250 |
|||
220 LET T = B(C) |
|||
230 LET B(C) = B(L0) |
|||
240 LET B(L0) = T |
|||
250 NEXT L0 |
|||
260 PRINT |
|||
270 PRINT |
|||
280 PRINT "AFTER:" |
|||
290 FOR L0 = 0 TO 51 |
|||
300 PRINT B(L0);" "; |
|||
310 NEXT L0 |
|||
320 PRINT |
|||
330 END</syntaxhighlight> |
|||
==={{header|OxygenBasic}}=== |
==={{header|OxygenBasic}}=== |
||
<syntaxhighlight lang="text"> |
<syntaxhighlight lang="text">uses chaos |
||
uses chaos |
|||
uses timeutil |
uses timeutil |
||
seed=GetTickCount |
seed=GetTickCount |
||
Line 1,139: | Line 1,191: | ||
j=irnd(1,100) |
j=irnd(1,100) |
||
swap d[i],d[j] |
swap d[i],d[j] |
||
⚫ | |||
next |
|||
⚫ | |||
==={{header|QB64}}=== |
==={{header|QB64}}=== |