Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possible bug in randomness on first call #3

Open
williamgrimes opened this issue Oct 27, 2021 · 1 comment
Open

Possible bug in randomness on first call #3

williamgrimes opened this issue Oct 27, 2021 · 1 comment

Comments

@williamgrimes
Copy link

Can you explain this behaviour?

user> (set-random-seed! 2)
nil
user> (rand-nth (take 10 (range)))
7
user> (set-random-seed! 42) 
nil
user> (rand-nth (take 10 (range)))
7
user> (set-random-seed! 82) 
nil
user> (rand-nth (take 10 (range)))
7
user> (set-random-seed! 182)
nil
user> (rand-nth (take 10 (range)))
7
user> (set-random-seed! 1082)
nil
user> (rand-nth (take 10 (range)))
6
user> (set-random-seed! 3)
nil
user> (rand-nth (take 10 (range)))
7
user> 

Changing the seed value from 2, 3, 42, 82, 182 the first call of (rand-nth (take 10 (range))) always returns a 7? Only when I (set-random-seed! 1082) I get a different value back. Here is a further experiment, see I always get a 7 for the first element in the vector, until I set the seed to 1082

user> (set-random-seed! 1)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(7 1 4 4 2)
user> (set-random-seed! 2)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(7 2 9 0 4)
user> (set-random-seed! 3)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(7 5 0 8 0)
user> (set-random-seed! 4)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(7 9 9 8 9)
user> (set-random-seed! 5)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(7 1 0 6 4)
user> (set-random-seed! 6)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(7 3 5 2 7)
user> (set-random-seed! 7)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(7 6 7 0 3)
user> (set-random-seed! 1082)
nil
user> (repeatedly 5 #(rand-nth (take 10 (range))))
(6 2 5 5 1)
user> 
@williamgrimes
Copy link
Author

williamgrimes commented Oct 28, 2021

user> (defn rand-int-gen 
            [seed n]
            (set-random-seed! seed)
            (println "Seed: " seed " n: " n " rand-int: " (rand-int n)))
#'user/rand-int-gen
user> (map #(rand-int-gen % 5) [1 5 10 20 50 75 100 1000 10000 100000])
Seed:  1  n:  5  rand-int:  3
Seed:  5  n:  5  rand-int:  3
Seed:  10  n:  5  rand-int:  3
Seed:  20  n:  5  rand-int:  3
Seed:  50  n:  5  rand-int:  3
Seed:  75  n:  5  rand-int:  3
Seed:  100  n:  5  rand-int:  3
Seed:  1000  n:  5  rand-int:  3
Seed:  10000  n:  5  rand-int:  4
Seed:  100000  n:  5  rand-int:  2
(nil nil nil nil nil nil nil nil nil nil)

Some further experimentation applying (rand-int 5) with a range of seed values, only with a seed > 1000 does the output change?

williamgrimes added a commit to williamgrimes/quilart that referenced this issue Nov 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant