Randomness in NodeBox OpenGL
Convert few codes from NodeBox 1 examples in Mac to NodeBox OpenGL for my students as most of them use Windows version.
What I notice is that whenever a random command is issued inside the draw method.
say for example: strokewidth(random(1,5))
or any command using random
In Window when the canvas.run(draw) is issued , what being displayed is a blinking screen where the random values keep on changing. This will make random function ineffective inside the draw method. Is it a bug of the run loop?
Keyboard shortcuts
Generic
? | Show this help |
---|---|
ESC | Blurs the current field |
Comment Form
r | Focus the comment reply box |
---|---|
^ + ↩ | Submit the comment |
You can use Command ⌘
instead of Control ^
on Mac
1 Posted by Stuart Axon on 16 Nov, 2015 10:28 AM
Hopefully this late reply will be useful to someone else...
If you want to keep the same random value every time you draw a frame, calculate it outside the draw loop, then reuse the same value.
Support Staff 2 Posted by Frederik De Ble... on 15 Dec, 2015 01:17 PM
Randomness in software is tricky. Since the code is executed every frame, and random returns a different value every time it is called, the result will be different for every frame.
There are two solutions to this:
from random import seed
at the top, then in your draw loop, set the seed to a fixed value, likeseed(42)
. Random numbers are not really random, but depend on this seed to generate a series of random values. The same seed always calculates the same series. So by "locking" the seed to a fixed value in the draw call, we can make sure that the values will not change per-frame.