# Random!!!

Hello everybody
Actually I just need a procedure that runs randomly  one of the
case...of numbers (look below), but thats not all, the difficult part is that it has to run all numbers, and not a number twice. I hope you understood.

Here an example, the first number is randomly selected between 1 and
10 e.x: 9 now it runs in the case...of:
9: begin {do something} end;
ok the whole procedure runs totally 10 times, so the next time maybe 2 is selected but not 9! I tried to show the procedure how it should look like:

procedure rand;
var

what:integer;

begin

randomize;

case what of

1:     begin
{do my code}
end;
2:     begin
{do my code}
end;
3:     begin
{do my code}
end;
{...}
{the numbers go until 10, each number only once!}
end;

end;

{By the way I tried to make it simple, because in my application it has
to choose from about 70 (!) numbers. I wrote my own code, but it didn't work; because it's quite long I didn't post it.}

:)dluedi
LVL 1
###### Who is Participating?

Commented:
dluedi,

You can do it like this

Procedure Rand(List: TStringList);
var
what, Index: integer;
begin
Randomize;
Index := Random(List.Count);
What := StrToInt(List[Index]);
List.Delete(Index);
case what of
1: ShowMessage('1');
2: ShowMessage('2');
3: ShowMessage('3');
4: ShowMessage('4');
5: ShowMessage('5');
6: ShowMessage('6');
7: ShowMessage('7');
8: ShowMessage('8');
9: ShowMessage('9');
10: ShowMessage('10');
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
NumberList: TStringList;
i: integer;
begin
NumberList := TStringList.Create;
for i := 1 to 10 do
begin
end;
for i := 1 to 10 do
begin
Rand(NumberList);
end;
NumberList.Free;
end;
0

Commented:
try this url,
http://www.delphi3000.com/articles/article_1898.asp

0

Commented:
Hi,

I am not sure but I think you are looking for something like this:

procedure TfrmMain.Button1Click(Sender: TObject);
var i, j : integer; numbers : string;
begin

randomize;
numbers := '';
for j := 0 to 8 do
while true do begin
//this gives random numbers between 1 and 10
i := Random(10 - (1 + 1)) + 1 + 1 ;
if pos(IntToStr(i),numbers) = 0 then begin
numbers := numbers + IntToStr(i);
showmessage(IntToStr(i));
break;
end;
end
end;

Good luck

Marcel
0

Author Commented:
Actually this was already the answer to my question, that went farst! Thx to everybody else who tried to help!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.