SynthMaker

random float generator

Archive · 2007 11 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

gregh ·

here is a random number generator to output floats in the range 0 to 1. However, the output does not appear to be uniformly distributed as I expected. Instead it is biased toward the upper bound.

If anyone knows why this is happening I'd appreciate knowing too!

thanks, greg

http://www.yousendit.com/download/UW15U ... bTgwTVE9PQ

oddson ·

You're taking the absolute value of a cosine.

The slope is steap near zero and shallow near 1. So it spends much more if its 'time' near 1 than near zero.

gregh ·

Well it's a few years since i finished my phd and that was in neuroscience rather than maths so i guess i'm pretty rusty. I was assuming that each value of the cosine was equally probable so that mapping from the relatively random floats to the cosine would normalise the values to -1,1 and that the absolute value would be taken as the sqrt of the square. Hence it would be okay. But obviously not 🙂

oddson ·

A triangle wave function would give you an even distribution... but the rand numbers should already be even so I don't know what it's for.

I saw Tuz used this as a normalizing scheme and I thought it was a cool way to get a biased distribution.

The other thing is you're always seeding the lower RNG with zero as it takes an integer seed and you're having a normalized float being coerced to an integer (and therefore it's virtually always going to truncate to zero).

gregh ·

Thanks for your time on this.

I was looking for more random numbers than the current integer function offers and I wanted them as floats on 0,1

greg

oddson ·

gregh ·

oddson wrote:

thanks, that's what i first had (though with the button) until i thought of the idea of generating more than 32768 of them by doing the division between two sets of 32768

oddson ·

Yeah... I figured that was the intent. It won't generate numbers random to the full resolution of single floats - but it's good enough for most uses.

gregh ·

oddson wrote: Yeah... I figured that was the intent. It won't generate numbers random to the full resolution of single floats - but it's good enough for most uses.

yep, it'll do - i'll also look at coding something. I need to learn that anyway.

infuzion ·

Tip: Try to avoid division where you can; tends to be expensive CPU cycle-wise. [old link]

gregh ·

thanks for the tip re cpu

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.