The new NodeBox forum is live! Everything from support.nodebox.net moved here: sign in with the same email to pick up your old posts. Something not working? Write to forum-support@nodebox.net.

NodeBox OpenGLArchiveFrom the old forum

Randomness in NodeBox OpenGL

2 replies Last reply

  1. 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?

    Copy link
  2. 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.

    Copy link
  3. NodeBox team

    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:

    1. Pre-calculate the values: that is, they should be random at initialization time (every time the program runs), not for every frame.
    2. Use a random seed. Use from random import seed at the top, then in your draw loop, set the seed to a fixed value, like seed(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.
    Copy link

Know something that helps?

Sign in with your email address to reply. No password needed.

Sign in to reply