Pseudo-random numbers/Splitmix64: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (Change to task status) |
|||
Line 422: | Line 422: | ||
0: 20027 1: 19892 2: 20073 3: 19978 4: 20030 |
0: 20027 1: 19892 2: 20073 3: 19978 4: 20030 |
||
</pre> |
</pre> |
||
=={{header|Mathematica}}/{{header|Wolfram Language}}== |
|||
<lang Mathematica>ClearAll[BitShiftLevelUint, MultiplyUint, GenerateRandomNumbers] |
|||
BitShiftLevelUint[z_, n_] := BitShiftRight[z, n] |
|||
MultiplyUint[z_, n_] := Mod[z n, 2^64] |
|||
GenerateRandomNumbers[st_, n_] := Module[{state = st}, |
|||
Table[ |
|||
state += 16^^9e3779b97f4a7c15; |
|||
state = Mod[state, 2^64]; |
|||
z = state; |
|||
z = MultiplyUint[BitXor[z, BitShiftLevelUint[z, 30]], 16^^bf58476d1ce4e5b9]; |
|||
z = MultiplyUint[BitXor[z, BitShiftLevelUint[z, 27]], 16^^94d049bb133111eb]; |
|||
Mod[BitXor[z, BitShiftLevelUint[z, 31]], 2^64] |
|||
, |
|||
{n} |
|||
] |
|||
] |
|||
GenerateRandomNumbers[1234567, 5] |
|||
nums = GenerateRandomNumbers[987654321, 10^5]; |
|||
KeySort[Counts[Floor[5 nums/N[2^64]]]]</lang> |
|||
{{out}} |
|||
<pre>{6457827717110365317, 3203168211198807973, 9817491932198370423, 4593380528125082431, 16408922859458223821} |
|||
<|0->20027, 1->19892, 2->20073, 3->19978, 4->20030|></pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |