Example:
Code: Select all
Dim number.l(5000000)
for n = 0 to 5000000
number(n) = n
next n
Can anyone help me?.
Regards!


Code: Select all
Dim number.l(5000000)
for n = 0 to 5000000
number(n) = n
next n
Code: Select all
Dim number.l(5)
for n = 0 to 4
number(n) = n
next n
dim rnd.l(5)
for n = 0 to 4
rnd(n) = number(random(4))
debug rnd(n)
next n
end
Code: Select all
Dim number.l(10)
For Index = 0 To 10
number(Index) = Index
Next
Debug "Sorted Array"
For Index = 0 To 10
Debug number(Index)
Next
Debug ""
For Index = 0 To 10
IndexB = Random(10)
If IndexB <> Index
Swap number(Index), number(IndexB)
EndIf
Next
Debug "UnSorted Array"
For Index = 0 To 10
Debug number(Index)
Next
Debug ""
Yes!...Xombie wrote:I think he means he wants to fill the array with his own data and then do some kind of random access to it? Like randomly swapping around the elements. ... right? Or no?
Code: Select all
;-
Global Dim number.l(5000000)
For n = 0 To 5000000
number(n) = n
Next n
;-
Procedure.l GetNumber()
;
Protected a.l
;
a = Random(5000000)
;
ProcedureReturn number(a)
;
EndProcedure
;-
For i.l = 0 To 10
;
Debug Str(i)+" : "+Str(number(i))
;
Next i
Debug "-------... Randomizing ... ----------"
For i.l = 0 To 10
;
Debug Str(i)+" : "+Str(GetNumber())
;
Next i
;-
Debug "Done"
;-
End
Code: Select all
;-
#MaxElements = 5000000
;-
Global Dim number.l(#MaxElements)
For n = 0 To #MaxElements
number(n) = n
Next n
Global Dim keeper_number.l(#MaxElements)
;-
Procedure UnsortNumber()
;
Protected iLoop.l
;
For iLoop = 0 To #MaxElements
;
keeper_number(iLoop) = 0
;
Next iLoop
;
EndProcedure
Procedure.l GetNumber(i)
;
Protected a.l
;
Protected iLoop.l
;
Protected CaughtMatch.b
;
If keeper_number(i) = -1
;
ProcedureReturn number(0)
;
Else
;
If keeper_number(i) = 0
;
Repeat
;
a = Random(#MaxElements)
;
For iLoop = 0 To #MaxElements
;
If keeper_number(iLoop) = a : CaughtMatch = #True : EndIf
;
Next iLoop
;
Until CaughtMatch = #False
;
keeper_number(i) = a
;
ProcedureReturn number(keeper_number(i))
;
Else
;
ProcedureReturn number(keeper_number(i))
;
EndIf
;
EndIf
;
EndProcedure
;-
For i.l = 0 To 10
;
Debug Str(i)+" : "+Str(number(i))
;
Next i
Debug "-------... Randomizing ... ----------"
For i.l = 0 To 10
;
Debug Str(i)+" : "+Str(GetNumber(i))
;
Next i
Debug "-------... Extending ... ----------"
For i.l = 0 To 20
;
Debug Str(i)+" : "+Str(GetNumber(i))
;
Next i
;
UnsortNumber()
;
Debug "-------... Unsorted ... ----------"
For i.l = 0 To 10
;
Debug Str(i)+" : "+Str(GetNumber(i))
;
Next i
;
;-
Debug "Done"
MessageRequester("", "Done")
;-
End
Code: Select all
*l.Long
*l = (Itemtoaccess) <<2
*l\l (=item in the array)
Code: Select all
*l.Long
*l = (Itemtoaccess) <<2 + OffsetOf (...) - for structured arrays or linked lists)
*l\l (=item in the array)
Code: Select all
;-
#MaxElements = 5000000
;-
Global Dim number.l(#MaxElements)
For n = 0 To #MaxElements
number(n) = n
Next n
;-
Procedure FisherYates()
;
Protected i.l
;
Protected j.l
;
i = #MaxElements
;
While i
;
j = Random(i + 1)
;
Swap number(i), number(j)
;
i - 1
;
Wend
;
EndProcedure
;-
For i.l = 0 To 20
Debug Str(i)+" : "+Str(number(i))
Next i
Debug " ....................: Shuffle :...................."
FisherYates()
For i.l = 0 To 20
Debug Str(i)+" : "+Str(number(i))
Next i
Debug " ....................: Shuffle :...................."
FisherYates()
For i.l = 0 To 20
Debug Str(i)+" : "+Str(number(i))
Next i
;-
Debug "Done..."
;-
End
;-
Code: Select all
; General Procs for Mem-Item handling
Procedure.l AddMemItem(Mem_P.l, Item_P.l) ; returns the new pointer to mem and add the pointer to the Mem-list
*l.Long
If Mem_P = 0 ; no mem reserved
Mem_P = AllocateMemory(4) ; a long
Else
Mem_P = ReAllocateMemory(Mem_P, MemorySize(Mem_P) + 4)
EndIf
*l = Mem_P + MemorySize(Mem_P) - 4
*l\l = Item_P
ProcedureReturn Mem_P
EndProcedure
Procedure.l CountMemItems(Mem_P.l) ; returns the number of Items here
Back_L.l
If Mem_P <> 0
Back_L = MemorySize(Mem_P)>>2
Else
Back_L = 0
EndIf
ProcedureReturn Back_L
EndProcedure
Procedure.l SearchItemInIndex(Mem_P.l, Item_P.l) ; returns the itemnumber of these item in this index, else -1
Back_L.l = -1
*l.Long
If Mem_P
For x = 0 To MemorySize(Mem_P)>>2 -1
*l = Mem_P + x<<2
If *l\l = Item_P
Back_L = x
Break
EndIf
Next
EndIf
ProcedureReturn Back_L
EndProcedure
Procedure.l ReleaseItemMem(Mem_P.l) ; release the memory and returns 0
*l.Long
If Mem_P ; mem reserved
FreeMemory(Mem_P)
EndIf
ProcedureReturn 0
EndProcedure
Procedure.l DeleteMemItem(Mem_P.l, Item_L.l) ; deletes the Item
*l.Long
If Item_L > -1 And Item_L <= CountMemItems(Mem_P)
*l = Mem_P + Item_L<<2
; shuffle the Items up
For x = Item_L To MemorySize(Mem_P)>>2 - 2
CopyMemory(Mem_P + (x+1)<<2, Mem_P + x<<2, 4)
Next
; realloc the mem
If MemorySize(Mem_P) - 4 = 0
FreeMemory(Mem_P)
Mem_P = 0
Else
Mem_P = ReAllocateMemory(Mem_P, MemorySize(Mem_P) - 4)
EndIf
EndIf
ProcedureReturn Mem_P
EndProcedure