Hi,
oder vielleicht dir beim Interpretieren?
Ah, ok. die Reference sagt
„A typical way to generate trivial pseudo-random numbers in a determined range using rand is to use the modulo of the returned value by the range span and add the initial value of the range:“
v2 = rand() % 100 + 1; // v2 in the range 1 to 100
v3 = rand() % 30 + 1985; // v3 in the range 1985-2014
ja, stimmt. Ich hatte das wohl mit Math.random() in JS verwechselt.
> Also müsste es so sein?
> `random24 = rand() % 2<<23 + 2<<24 - 1`{:.language-c}
Fast. Die Untergrenze deines gewünschten Bereichs ist aber nicht 2^24, sondern 2^23.
> > Möglicherweise hast du übersehen, dass der Operator ^ in C/C++ nicht für Potenzierung steht, sondern für bitweises XOR,
> Ja, das wusste ich nicht. Bedeutet das, dass 2^23 zu 26 (11010) wird?
Nein, `2^23`{:.language-c} wird in C zu 21:
0000 0010
xor 0001 0111
-------------
0001 0101 (21)
> > Und hast du vielleicht auch übersehen, dass rand() einen Wert vom Typ float oder double im Intervall [0.0, 1.0[ liefert?
> Laut [Reference](http://www.cplusplus.com/reference/cstdlib/rand/) sollte es ein Integer sein?!
Siehe oben, da war \_ich\_ schief gewickelt.
Ciao,
Martin
--
Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(