Knuth shuffle: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|Eiffel}}: fix irregular markup) |
|||
Line 1,151: | Line 1,151: | ||
320 NEXT |
320 NEXT |
||
330 END DEF</lang> |
330 END DEF</lang> |
||
=={{header|QB64}}== |
|||
<lang QB64> |
|||
shuffle and make sure that number does not take its place |
|||
and between cells at least 10% ... Shuffle from Russia |
|||
a = 100: DIM d(a): x=0: k=0: t$=CHR$(9): RANDOMIZE TIMER 'Shuffle_RUS.bas |
|||
PRINT ,: FOR i = 1 TO a: d(i)=i: NEXT |
|||
FOR i = 1 TO 5: PRINT d(i);: NEXT: PRINT , |
|||
FOR i = a-3 TO a: PRINT d(i);: NEXT: z = TIMER |
|||
OPEN "b:/control.txt" FOR OUTPUT AS #1 ' ram disk |
|||
WHILE x < 1 |
|||
v = 0: FOR i = 1 TO a |
|||
1 m = INT(RND*a)+1: IF ABS(d(i)-d(m)) < .1*a THEN v = v+1: GOTO 1 |
|||
PRINT #1, ABS(d(i)-d(m)); t$; d(i); t$; d(m); t$; i; t$; m; t$; d(i)/d(m); t$; d(m)/d(i) ' ram disk |
|||
t = d(i): d(i) = d(m): d(m) = t |
|||
NEXT |
|||
s = 0: FOR i = 1 TO a |
|||
IF d(i) = i THEN s = s+1 ' : goto 5 |
|||
NEXT |
|||
5 k = k+1: PRINT: PRINT s; v,: IF s=0 THEN x = x+1 |
|||
FOR i = 1 TO 5 |
|||
IF d(i) = i THEN PRINT -d(i); ELSE PRINT d(i); |
|||
NEXT: PRINT , |
|||
FOR i = a-3 TO a |
|||
IF d(i) = i THEN PRINT -d(i); ELSE PRINT d(i); |
|||
NEXT |
|||
WEND: PRINT: PRINT " = "; k, TIMER-z: END</lang> |
|||
=={{header|bc}}== |
=={{header|bc}}== |