Dark Bit Factory & Gravity
PROGRAMMING => Other languages => Yabasic => Topic started by: bikemadness on August 25, 2007
-
they must be based on an equation, in Yabasic at least, and by powers of 10.
with the program, the first number is always zero, when given ten numbers to choose from.
with 100, another zero will be chosen, but won't write "00".
with 1000, a '1' will be chosen, and of course it will write "1"
with 10000, the fourth one will be '2', writing "12"
I noticed this with the doily's. Patterns were beginning to be familier.
U/D d-pad to scroll
open window 640,512
random=200
dim z(random)
for a=1 to random
z(a)=int(ran(1000))
next a
repeat
setdrawbuf vm
vm=1-vm
setdispbuf vm
clear window
c=peek("port1")
for a=1 to random
if a<10 b=20
if a>9 and a<100 b=10
if a>99 b=0
text 10+b,a*20+scroll,str$(a)+"."
text 60,a*20+scroll,str$(z(a))
next a
if and(c,16)>0 scroll=scroll+20
if and(c,64)>0 scroll=scroll-20
if scroll>0 scroll=0
if scroll<-(20*a)+500 scroll=-(20*a)+500
until (1=0)
Have a Yahappy day.
-
Hmm, don't understand what your saying...
When I run that program, I'm getting random numbers... is that what you mean?
As in... the value for the array Z is random, and changes?
-
The 'random' number list does not change, each time it is run, at any time.
Have a Yahappy day.
-
I think its because you have to seed the randomization, on the time or something that will be different each time you run your program. Otherwise you end up with the same set of numbers generated each time you run your prog. I don't know how you do that in YaBasic tho.
-
It's a known problem, the PS2 version of yabasic always starts with the same random number seed every time you run a program. There's no seed/srand function in yabasic, so Parabellum came up with this code
sub randomize()
d=1 : rnd$=left$(date$,13)+left$(time$,8)
for i=len(rnd$) to 1 step -1
for j=d*i*asc(mid$(rnd$,i,1))/3.75 to 0 step -1
k = ran(100)
next
d = 1+k/100
next
end sub
Just call randomize() as the first thing in your program. It uses the clock to generate a 'random' number of calls to ran before the program starts.
Jim
-
It's known by a lot more people now, including me.
Is it a shortcut? an equation?
Because I was going to try and figure it out, if it was.
Have a Yahappy day.
-
A random number generator on a computer isn't random, it's just a very long sequence of numbers that eventually repeats itself. For instance, in most C runtime libraries, the function is
static unsigned long int next = 1;
int rand(void) // RAND_MAX assumed to be 32767
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}
or, translating that to something yabasic-ish
next=1
sub rand()
next = next * 1103515245 + 12345
return mod(next/65536, 32768)
end sub
Every time yabasic is started, next gets set back to 1, so the random number generator restarts the sequence again at the same place. In C you can set 'next' by calling a function called srand(). yabasic doesn't have this function, so Parabellum's code works around it.
Jim
-
This problem doesnt exist on the Yabasic disc for Playstation2 I think the system clock was used in the formula in my Tears of Spheres game it always choses the same positions and directions everytime on the PC but on run it on Playstation2 and its always random