[Clip] Re: randomize number
- Hello Eb, Jody
At 17:39 1999-11-28 -0600, you wrote:
>This is truly beautyful! Such an elegant solution to a problem which,
>Here is a stand-alone, non-repeating, random DATA
as already remarked, is by no means trivial. One of the cases where
the manual action (drawing lots without replacement) is much simpler
than the computerized simulation.
Once again being a meddling busybody, I couldn't keep my sticky fingers
away. The following only reduces the lines of code somewhat and adds a
rudimentary input interface.
^!Set %max%=^?[Maximum, if you want to pull numbers 1 - max=0]
^!set %items%=^?[else specify any items, separated with blanks]
^!If ^%max%=0 items
^!if ^%n%>^%max% stringdone
^!Set %string%=^$StrReplace(" ";"^p";"^%items%";True;False)$
^!If ^%List0%>0 Again
- Hello Eb, Jody
It is a kind of natural law, that you are never as clear-sighted as the
moment after you submit something.
I realised the obvious point that the number of lines of code naturally is
less important than the speed of the result. And Eb's original version is
significantly faster than my variant, if you accumulate the result in a
variable, rather than continously output it.
Sorry about my butting in, Eb.
- Hi Claes,
>It is a kind of natural law, that you are never as clear-sighted as theI'm not offended by someone modifying my code, especially
>moment after you submit something.
>I realised the obvious point that the number of lines of code naturally is
>less important than the speed of the result. And Eb's original version is
>significantly faster than my variant, if you accumulate the result in a
>variable, rather than continously output it.
>Sorry about my butting in, Eb.
if they then compliment me on my original <grin>.
And if you look below, your version gave me THE clew on
how to get rid of those pesky 5 extra GOTOs -- that
SPACE you put in place of the used element!
Tack så mycket.
So I changed the URDG (unique random data gen) as follows:
1. End the data array with an empty element, i.e. an ";",
just to make each element identical, if set to SPACE.
2. Replace the hit element with a TOKEN (you used SPACE)
(I tried a space, but got funny results because my
data contained spaces. Then decided that this step
required a UNIQUE token -- "#" in the sample code).
3. The array now has a consistent pattern "#;" to delete
in any element position.
;----- Start self-contained clip -----
;Yet Another Random Unique Data Generator
;Ver 11:22 12/1/99, Eb Guenther <ntp@...>
;Replace the first line with your preferred method
;of data Input (empty element at end!)
^!Set %MaxIndex%=^%List0%; %result%=Seq:
^!Set %Index%=^$Calc( Int( Random( 1 ) * ^%MaxIndex% + 1 ) )$
^!If ^%List0%>1 Again
;----- End self-contained clip -----
On my antique PC this takes about 110 mS, about 18% faster
than my previous version! Anyone with a screamer out there
wanna give me an incentive to get a new PC for X-mass?
Loop the clip XX times, and divide the elapsed second by XX.
Do I hear 10 mS? Better?
AND the clip is simpler and easier to read.
- Hi Eb, Manuel, and Claes,
> I'm not offended by someone modifying my code, especially ifYou did a great job! <g> Really! I think I have it the way
> they then compliment me on my original <grin>.
Manuel first requested it now with some options to make it not as
Manuel specific. ;)
I have the list the script picks from in an ini file now which is
made after the Setup Clip is done. This is so a year down the
road the used numbers, or should I say what is left is remembered
- provided Windows doesn't eat your drive. ;->
When the last number is used you are told to run setup again to
build a new list. There is an option to add a wrapper start and
end around the number. Manuel's [#nnn] is default and no wrapper
can also be used which I suppose would be most used. Leading
zeros are added to smaller numbers for even alignment (no option
there >:-þ~~~). I took about 12 seconds for me to generate an
initial list of 6600 numbers. <vbs> There is a limit of 32kb in
an ini file so once you get to that point you will get an error
saying cannot write to RandNum.ini. There is an option to open
that so you can easily delete it if you want.
It may be viewed or copied at Snatch-A-Clip. It is all the way
at the bottom unless you use the Quick Snatch. Make sure you
read the first few lines if you go so you know what to do with
the html popup.
Have fun... Back to beta testing. :)
The NoteTab Clip List...