Re: Seeding Randomization on CMD (WinXP Pro)

From: PsyB (psychopathNO_at_MEATshaw.ca)
Date: 10/06/04


Date: Wed, 06 Oct 2004 14:58:08 -0600

Phil Robyn [MVP] wrote:
> PsyB wrote:
>
>> Can anyone tell me how to get a *PROPER* random number? I have defined
>> a variable as follows:
>>
>> set randnumber=%random%
>>
>> When querying the contents of my variable %randnumber% when staying
>> inside the CMD prompt without an exit, the variable, of course, is
>> randomized. However since my script takes exactly the same amount of
>> time to run each time it is run, the random number will always be the
>> same since the %random% variable is never seeded properly (indeed it
>> follows the same progression of "random" numbers each and every time
>> that CMD is started). I have tried various way to cause inconsistency
>> in how fast the script is executed including netstat, ping and dir -
>> anything that might change the execution time so that the number
>> pulled from the pool is different, though no matter what I have tried
>> I end up centering around a single number. Is there any way to
>> generate a real random number on CMD? Or is there any way to seed the
>> CMD line with the time or some other variable that would allow a
>> better randomization? Use of pause is out of the question, though, as
>> this needs to be a transparent script.
>>
>>
> - - - - - - - - - - begin screen capture - - - - - - - - - -
> <Win2000> c:\cmd>for /l %a in (1,1,40) do @demo\RandomNumber
> 28706274
> 17320870
> 68372699
> 98623175
> 89578187
> 1836712
> 70704052
> 38107119
> 1034443
> 96581319
> 80050619
> 83072647
> 47275739
> 91770784
> 32657180
> 82783096
> 75807084
> 35338392
> 74495116
> 64171344
> 44289868
> 87174368
> 72058173
> 31741854
> 89680318
> 27638726
> 61450241
> 16231441
> 48446964
> 17055075
> 8100615
> 17027914
> 86868443
> 2760513
> 66488600
> 26492228
> 96420249
> 62050581
> 8049294
> 77723888
>
> <Win2000> c:\cmd>rlist demo\RandomNumber.cmd
> =====begin c:\cmd\demo\RandomNumber.cmd ====================
> 1. @echo off
> 2. set S1=%time::=%
> 3. set S1=%S1: 0=%
> 4. set S1=%S1:.=-%
> 5. set S1=%S1:-0=-%
> 6. set /a my_random_number = "%random% * %S1%"
> 7. echo %my_random_number%
> =====end c:\cmd\demo\RandomNumber.cmd ====================
> - - - - - - - - - - end screen capture - - - - - - - - - -
>
Thank you!

        I had tried something similar, but this produces results similar to CMD
random for me though. This is because I have to run the randomization
from a fresh CMD window each time and need a higher differential between
the results I attained. I get this when issuing RandomNumber.cmd with
an echo %date% %time% %my_random_number% >>Random.log at the end, each
execution in a fresh CMD state (IE:DC the CMD file). When finished the
randomization will need to be run 6 times per second, so I need a higher
degree of randomization. I appreciate your time though!

10/06/04 14:46:18.54 -127076587
10/06/04 14:46:18.76 -127076612
10/06/04 14:46:19.10 -126613869
10/06/04 14:46:19.44 -126613903
10/06/04 14:46:19.83 -126613942
10/06/04 14:46:20.30 -126006586
10/06/04 14:46:20.65 -126006621
10/06/04 14:46:21.03 -125543869
10/06/04 14:46:21.42 -125543908
10/06/04 14:46:21.78 -125543944
10/06/04 14:46:22.14 -125081184
10/06/04 14:46:22.53 -125081223

-- 
-=[PsyB]=-
Greater in battle than the man who would conquer a thousand-thousand men 
is he who would conquer just one - *himself*.
                                                --Dhammapada--

Loading