Here is a snippet to test what i mean by not every position and what you should use insted of rnd swap with last one.
Rem Project: rnd list test
Rem Created: Saturday, March 10, 2012
Rem ***** Main Source File *****
sync on : sync rate 0 : color backdrop rgb(0,0,0)
set text font "arial" : set text size 16 : set text transparent
RANDOMIZE TIMER()
gosub Sub_veribles
gosub Sub_defalt_Settings
ink Rgb(255,255,255) , 0
do
cls 0
if scancode() = 0 then key_hold = 0
IF rightkey() = 1 and key_hold = 0
key_hold = 1
Display_View = Display_View + 1
IF Display_View > 4 then Display_View = 4
Endif
IF leftkey() = 1 and key_hold = 0
key_hold = 1
Display_View = Display_View - 1
IF Display_View < 1 then Display_View = 1
Endif
IF spacekey() = 1 and key_hold = 0
key_hold = 1
gosub Sub_defalt_Settings
Endif
IF Display_View = 1
ink Rgb(255,255,255) , 0
Text 0 , 0 , "List Defalt data"
Temp_N = 1
FOR Y = 1 to 10
FOR X = 1 to 10
Temp_X = 90 + ( X * 30 )
Temp_Y = 90 + ( Y * 30 )
text Temp_X , Temp_Y , str$( Normal_list( Temp_N ) )
Temp_N = Temp_N + 1
Next X
Next Y
Endif
IF Display_View = 2
ink Rgb(255,255,255) , 0
Text 0 , 0 , "rnd swap with end of list ( 100 rnd positions )"
TEMP_Count = 0
FOR N = 1 to 100
IF RND_Swap( N ) = N then TEMP_Count = TEMP_Count + 1
Next
ink Rgb(255,255,255) , 0
text 0 , 30 , "Matches to normal list: " + str$( TEMP_Count )
Temp_N = 1
FOR Y = 1 to 10
FOR X = 1 to 10
Temp_X = 90 + ( X * 30 )
Temp_Y = 90 + ( Y * 30 )
IF RND_Swap( Temp_N ) = Temp_N
ink Rgb(255,0,0) , 0
else
ink Rgb(255,255,255) , 0
endif
text Temp_X , Temp_Y , str$( RND_Swap( Temp_N ) )
Temp_N = Temp_N + 1
Next X
Next Y
Endif
IF Display_View = 3
ink Rgb(255,255,255) , 0
Text 0 , 0 , "rnd swap with end of list ( 200 rnd positions )"
TEMP_Count = 0
FOR N = 1 to 100
IF RND_Swap_200( N ) = N then TEMP_Count = TEMP_Count + 1
Next
ink Rgb(255,255,255) , 0
text 0 , 30 , "Matches to normal list: " + str$( TEMP_Count )
Temp_N = 1
FOR Y = 1 to 10
FOR X = 1 to 10
Temp_X = 90 + ( X * 30 )
Temp_Y = 90 + ( Y * 30 )
IF RND_Swap_200( Temp_N ) = Temp_N
ink Rgb(255,0,0) , 0
else
ink Rgb(255,255,255) , 0
endif
text Temp_X , Temp_Y , str$( RND_Swap_200( Temp_N ) )
Temp_N = Temp_N + 1
Next X
Next Y
Endif
IF Display_View = 4
ink Rgb(255,255,255) , 0
Text 0 , 0 , "rnd position copy to aother list 100 times"
TEMP_Count = 0
FOR N = 1 to 100
IF Rnd_list( N ) = N then TEMP_Count = TEMP_Count + 1
Next
ink Rgb(255,255,255) , 0
text 0 , 30 , "Matches to normal list: " + str$( TEMP_Count )
Temp_N = 1
FOR Y = 1 to 10
FOR X = 1 to 10
Temp_X = 90 + ( X * 30 )
Temp_Y = 90 + ( Y * 30 )
IF Rnd_list( Temp_N ) = Temp_N
ink Rgb(255,0,0) , 0
else
ink Rgb(255,255,255) , 0
endif
text Temp_X , Temp_Y , str$( Rnd_list( Temp_N ) )
Temp_N = Temp_N + 1
Next X
Next Y
Endif
ink Rgb(255,255,255) , 0
Text 0 , 60 , "left and right arrow keys to change display"
Text 0 , 90 , "spacebar to rnd lists"
IF Display_View > 1
IF Fun_check_numbers( Display_View ) = 0
ink Rgb(255,0,0) , 0
Text 300 , 0 , "Failed checks"
else
ink Rgb(255,255,255) , 0
Text 300 , 0 , "passed checks"
endif
endif
sync
Loop
Sub_defalt_Settings:
rnd_timer = timer()
RANDOMIZE rnd_timer
rnd_temp_count = 0
FOR N = 1 to 100
Normal_list( N ) = N
RND_Swap( N ) = N
RND_Swap_200( N ) = N
Rnd_list( N ) = N
Next
rem rnd swap
Rem number of swaps
FOR N = 1 to 100
Temp_X = rnd( 99 ) + 1
TEmp_Value = RND_Swap( 100 )
RND_Swap( 100 ) = RND_Swap( Temp_X )
RND_Swap( Temp_X ) = TEmp_Value
rnd_temp_count = rnd_temp_count + 1
If rnd_temp_count > 50
rnd_timer = rnd_timer + 1
RANDOMIZE rnd_timer
Endif
Next
rem rnd swap 200
Rem number of swaps
FOR N = 1 to 200
Temp_X = rnd( 99 ) + 1
TEmp_Value = RND_Swap_200( 100 )
RND_Swap_200( 100 ) = RND_Swap_200( Temp_X )
RND_Swap_200( Temp_X ) = TEmp_Value
rnd_temp_count = rnd_temp_count + 1
If rnd_temp_count > 50
rnd_timer = rnd_timer + 1
RANDOMIZE rnd_timer
Endif
Next
Rem RND list copy ro aother list
Temp_Size = 100
Temp_Rnd_List_Index = 1
FOR N = 1 to 100
Temp_X = rnd( Temp_Size - 1 ) + 1
Rnd_list_2( Temp_Rnd_List_Index ) = Rnd_list( Temp_X )
Temp_Rnd_List_Index = Temp_Rnd_List_Index + 1
Rnd_list( Temp_X ) = 0
Rnd_list( Temp_X ) = Rnd_list( Temp_Size )
Rnd_list( Temp_Size ) = 0
Temp_Size = Temp_Size - 1
rnd_temp_count = rnd_temp_count + 1
If rnd_temp_count > 50
rnd_timer = rnd_timer + 1
RANDOMIZE rnd_timer
Endif
Next N
rem copy back to first list
FOR N = 1 to 100
Rnd_list( N ) = Rnd_list_2( N )
Rnd_list_2( N ) = 0
Next
return
Sub_veribles:
Dim Normal_list( 100 ) as integer
global Display_View as integer
global key_hold as integer
Display_View = 1
DIM RND_Swap( 100 ) as integer
DIM RND_Swap_200( 100 ) as integer
DIM Rnd_list( 100 ) as integer
DIm Rnd_list_2( 100 ) as integer
Dim check_list( 100 ) as integer
global rnd_timer as integer
return
rem Index is which List to check
Function Fun_check_numbers( Index )
return_value = 1
IF Index > 1
For N = 1 to 100
check_list( N ) = 0
Next N
FOr N = 1 to 100
IF Index = 2 then Temp_Value = RND_Swap( N )
IF Index = 3 then Temp_Value = RND_Swap_200( N )
IF Index = 4 then Temp_Value = Rnd_list( N )
check_list( Temp_Value ) = check_list( Temp_Value ) + 1
Next
rem check to see if there are any double or more and 0 in the list
FOR N = 1 to 100
IF check_list( N ) = 0 then return_value = 0
IF check_list( N ) > 1 then return_value = 0
Next
endif
Endfunction return_value