annotate src/testdir/test_random.vim @ 18732:2513e666aa82 v8.1.2356

patch 8.1.2356: rand() does not use the best algorithm Commit: https://github.com/vim/vim/commit/f8c1f9200c4b50969a8191a4fe0b0d09edb38979 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Nov 28 22:13:14 2019 +0100 patch 8.1.2356: rand() does not use the best algorithm Problem: rand() does not use the best algorithm. Solution: use xoshiro128** instead of xorshift. (Kaito Udagawa, closes #5279)
author Bram Moolenaar <Bram@vim.org>
date Thu, 28 Nov 2019 22:15:04 +0100
parents aef98a646d3e
children c477006e8857
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18701
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 " Tests for srand() and rand()
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 func Test_Rand()
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4 let r = srand(123456789)
18732
2513e666aa82 patch 8.1.2356: rand() does not use the best algorithm
Bram Moolenaar <Bram@vim.org>
parents: 18703
diff changeset
5 call assert_equal([1573771921, 319883699, 2742014374, 1324369493], r)
2513e666aa82 patch 8.1.2356: rand() does not use the best algorithm
Bram Moolenaar <Bram@vim.org>
parents: 18703
diff changeset
6 call assert_equal(4284103975, rand(r))
2513e666aa82 patch 8.1.2356: rand() does not use the best algorithm
Bram Moolenaar <Bram@vim.org>
parents: 18703
diff changeset
7 call assert_equal(1001954530, rand(r))
2513e666aa82 patch 8.1.2356: rand() does not use the best algorithm
Bram Moolenaar <Bram@vim.org>
parents: 18703
diff changeset
8 call assert_equal(2701803082, rand(r))
2513e666aa82 patch 8.1.2356: rand() does not use the best algorithm
Bram Moolenaar <Bram@vim.org>
parents: 18703
diff changeset
9 call assert_equal(2658065534, rand(r))
2513e666aa82 patch 8.1.2356: rand() does not use the best algorithm
Bram Moolenaar <Bram@vim.org>
parents: 18703
diff changeset
10 call assert_equal(3104308804, rand(r))
18701
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 call test_settime(12341234)
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 let s = srand()
18703
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
14 if filereadable('/dev/urandom')
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
15 " using /dev/urandom
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
16 call assert_notequal(s, srand())
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
17 else
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
18 " using time()
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
19 call assert_equal(s, srand())
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
20 call test_settime(12341235)
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
21 call assert_notequal(s, srand())
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
22 endif
18701
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24 call srand()
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 let v = rand()
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 call assert_notequal(v, rand())
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28 call assert_fails('echo srand([1])', 'E745:')
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 call assert_fails('echo rand([1, 2, 3])', 'E475:')
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 call assert_fails('echo rand([[1], 2, 3, 4])', 'E475:')
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 call assert_fails('echo rand([1, [2], 3, 4])', 'E475:')
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32 call assert_fails('echo rand([1, 2, [3], 4])', 'E475:')
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 call assert_fails('echo rand([1, 2, 3, [4]])', 'E475:')
18703
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
34
aef98a646d3e patch 8.1.2343: using time() for srand() is not very random
Bram Moolenaar <Bram@vim.org>
parents: 18701
diff changeset
35 call test_settime(0)
18701
128662297ddf patch 8.1.2342: random number generator in Vim script is slow
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 endfunc