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>
</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</syntaxhighlight>
next
</syntaxhighlight>


==={{header|QB64}}===
==={{header|QB64}}===