Solved

Random

Posted on 2000-04-05
9
293 Views
Last Modified: 2010-04-04
I need to create random numbers.

the output of

for n := 0 to 100 do
begin
   Randomize;
   x := Random ( 50 );
   TMemo.Lines.Add ( IntToStr ( x ) );
end;

often looks like this:

5
5
5
5
5
5
33
33
33

how to avoid this and generate "real" random numbers?

like this:

34
7
29
44
2
17

By the way: I'm running a PIII500Mhz,
so I thought of the machine being too fast (Randomize has something to do with the system time) so I added some
Sleep ( Random (20) * Random (20));
Lines, but still no help.

A "Sleep ( 3000 );" does help, but makes it realy slow!

Regards, Oli
0
Comment
Question by:Oli2
9 Comments
 
LVL 3

Accepted Solution

by:
ckaneta earned 100 total points
ID: 2687758
put randomize outside of the loop
0
 
LVL 1

Author Comment

by:Oli2
ID: 2687765
Edited text of question.
0
 
LVL 6

Expert Comment

by:DrDelphi
ID: 2687766
Move Randomize outside of the for loop:

var n,x:integer;
begin
   Randomize;

for n := 0 to 100 do
begin
   x := Random ( 50 );
   Listbox1.items.Add ( IntToStr ( x ) );
end;


end;


Good luck!!


0
 
LVL 3

Expert Comment

by:hagur
ID: 2687769
Try this:

for n := 0 to 100 do
begin
   Randomize;
   x := Random ( 50 );
   Memo1.Lines.Add ( IntToStr ( x ) );
   Sleep(100);
end;

or even

for n := 0 to 100 do
begin
   Randomize;
   x := Random ( 50 );
   Memo1.Lines.Add ( IntToStr ( x ) );
   Sleep(500);
end;

This works perfectly for me, although on a slower machine, but hey ... a delay is a delay :)

-H
0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
LVL 1

Author Comment

by:Oli2
ID: 2687770
Hi, ckaneta!

It seems you're right!!!
How come this behaviour?
Can you explain it?
(just being curious)

Regards, Oli
0
 
LVL 17

Expert Comment

by:inthe
ID: 2687791
from delphi help:(see last paragraph)

Initializes the random number generator with a random value.

Unit

System

Category

random number routines

procedure Randomize;

Description

Randomize initializes the built-in random number generator with a random value (obtained from the system clock). The random number generator should be initialized by making a call to Randomize, or by assigning a value to RandSeed.

Do not combine the call to Randomize in a loop with calls to the Random function. Typically, Randomize is called only once, before all calls to Random.
0
 
LVL 1

Author Comment

by:Oli2
ID: 2687808
hmm, okay.
Now my problem: who to give the points to?
Suggestions?
I think of giving them to ckaneta - he was the first...
Is that okay with everybody?

Oli
0
 
LVL 1

Expert Comment

by:umulig
ID: 2689047
ckaneta was first he should get the points.

Umulig
0
 
LVL 1

Expert Comment

by:sageryd
ID: 2689350
Agree! ckaneta was first. Does anyone have an idea on how the random function works? Is there any documentation about it somewhere? You don't have to answer asthough it wasn't I that put up the original Q.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now