JinghuiLuAstronaut commited on
Commit
af38f3c
·
verified ·
1 Parent(s): c9a769d

Add files using upload-large-folder tool

Browse files
Files changed (20) hide show
  1. LTA_openwebtext_dualt/logs/lta_lm1b_classic_dirichlet_len1024_gbs512_8gpu_20k_save1k_20260523_watcher.sh +78 -0
  2. LTA_openwebtext_dualt/logs/lta_owt_dirichlet_categorical_fullvocab_c1024_fullycoupled_flmpack_onehot_hardce_ddit_small_len1024_gbs512_8gpu_1m_nw4_shufchunks.log +0 -0
  3. LTA_openwebtext_dualt/logs/owt_dirichlet_len1024_Cv_to_2v_gumbel_sde_watch/infer_lta_owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_gbs512_b32_8gpu_20k_save1k_gumbelwatch_20260525_step_0003000.log +136 -0
  4. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/__init__.py +0 -0
  5. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/__init__.py +0 -0
  6. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
  7. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
  8. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
  9. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
  10. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_direct.py +518 -0
  11. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_extending.py +118 -0
  12. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_generator_mt19937.py +0 -0
  13. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_generator_mt19937_regressions.py +165 -0
  14. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_random.py +1750 -0
  15. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_randomstate.py +2121 -0
  16. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_randomstate_regression.py +216 -0
  17. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_regression.py +149 -0
  18. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_seed_sequence.py +80 -0
  19. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_smoke.py +818 -0
  20. LTA_openwebtext_dualt/mini_owt_logdirichlet/logs/infer_not5_bottleneck128_170k_decode32_ema_20260611/lr3e3.log +29 -0
LTA_openwebtext_dualt/logs/lta_lm1b_classic_dirichlet_len1024_gbs512_8gpu_20k_save1k_20260523_watcher.sh ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ cd /e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt
5
+ export PYTHONPATH="$(pwd)${PYTHONPATH:+:$PYTHONPATH}"
6
+ export TOKENIZERS_PARALLELISM=false
7
+ export PYTHONUNBUFFERED=1
8
+
9
+ : "${RUN_DIR:?RUN_DIR is required}"
10
+ : "${OUT_BASE:?OUT_BASE is required}"
11
+ : "${LOG_DIR:?LOG_DIR is required}"
12
+ : "${TOKENIZER_PATH:?TOKENIZER_PATH is required}"
13
+ : "${SCORER:?SCORER is required}"
14
+
15
+ RUN_STEM="$(basename "${RUN_DIR}")"
16
+ TEMP_TAG="${ENDPOINT_TEMP//./p}"
17
+ PROCESSED_FILE="${LOG_DIR}/processed_${RUN_STEM}_steps${STEPS}_c${CMAX}_t${TEMP_TAG}_n${N_SAMPLES}.txt"
18
+
19
+ mkdir -p "${OUT_BASE}" "${LOG_DIR}"
20
+ touch "${PROCESSED_FILE}"
21
+
22
+ echo "[watch-classic] run_dir=${RUN_DIR}"
23
+ echo "[watch-classic] out_base=${OUT_BASE}"
24
+ echo "[watch-classic] interval=${STEP_INTERVAL} max_len=${MAX_LEN} steps=${STEPS} cmax=${CMAX} temp=${ENDPOINT_TEMP} n=${N_SAMPLES}"
25
+
26
+ while true; do
27
+ shopt -s nullglob
28
+ ckpts=("${RUN_DIR}"/step_*.pt)
29
+ shopt -u nullglob
30
+
31
+ if (( ${#ckpts[@]} == 0 )); then
32
+ echo "[watch-classic] $(date +%F_%T) no ckpt yet"
33
+ sleep "${SLEEP_SECONDS}"
34
+ continue
35
+ fi
36
+
37
+ printf "%s\n" "${ckpts[@]}" | sort | while read -r ckpt; do
38
+ base="$(basename "${ckpt}")"
39
+ step="${base#step_}"
40
+ step="${step%.pt}"
41
+ step_num=$((10#${step}))
42
+
43
+ if (( step_num % STEP_INTERVAL != 0 )); then
44
+ continue
45
+ fi
46
+ if grep -Fxq "${ckpt}" "${PROCESSED_FILE}"; then
47
+ continue
48
+ fi
49
+
50
+ out_dir="${OUT_BASE}/step_${step}"
51
+ log_file="${LOG_DIR}/infer_${RUN_STEM}_step_${step}.log"
52
+ mkdir -p "${out_dir}"
53
+
54
+ echo "[watch-classic] $(date +%F_%T) infer ${ckpt} -> ${out_dir}" | tee -a "${log_file}"
55
+ CUDA_VISIBLE_DEVICES="${WATCH_CUDA_VISIBLE_DEVICES}" python scripts/eval_owt_normal_steps_sweep_20260515.py \
56
+ --checkpoint "${ckpt}" \
57
+ --tokenizer_path "${TOKENIZER_PATH}" \
58
+ --scorer "${SCORER}" \
59
+ --out_dir "${out_dir}" \
60
+ --steps_list "${STEPS}" \
61
+ --cmax_list "${CMAX}" \
62
+ --endpoint_temps "${ENDPOINT_TEMP}" \
63
+ --n_samples "${N_SAMPLES}" \
64
+ --max_len "${MAX_LEN}" \
65
+ --decode_batch "${DECODE_BATCH}" \
66
+ --score_batch "${SCORE_BATCH}" \
67
+ --score_max_length "${SCORE_MAX_LENGTH}" \
68
+ --detokenizer lm1b \
69
+ --seed 20260523 \
70
+ --save_samples 16 \
71
+ 2>&1 | tee -a "${log_file}"
72
+
73
+ echo "${ckpt}" >> "${PROCESSED_FILE}"
74
+ echo "[watch-classic] $(date +%F_%T) done step_${step}" | tee -a "${log_file}"
75
+ done
76
+
77
+ sleep "${SLEEP_SECONDS}"
78
+ done
LTA_openwebtext_dualt/logs/lta_owt_dirichlet_categorical_fullvocab_c1024_fullycoupled_flmpack_onehot_hardce_ddit_small_len1024_gbs512_8gpu_1m_nw4_shufchunks.log ADDED
The diff for this file is too large to render. See raw diff
 
LTA_openwebtext_dualt/logs/owt_dirichlet_len1024_Cv_to_2v_gumbel_sde_watch/infer_lta_owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_gbs512_b32_8gpu_20k_save1k_gumbelwatch_20260525_step_0003000.log ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [watch-gumbel] 2026-05-25_15:35:51 infer runs/lta_owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_gbs512_b32_8gpu_20k_save1k_gumbelwatch_20260525/step_0003000.pt -> docs/lta_samples/metrics_20260525/owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_every1k_sde_gumbel_topp0.95_tau1.0_to_0.2_blend_c32100_64200_n128/lta_owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_gbs512_b32_8gpu_20k_save1k_gumbelwatch_20260525/step_0003000
2
+ [load] runs/lta_owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_gbs512_b32_8gpu_20k_save1k_gumbelwatch_20260525/step_0003000.pt
3
+ [ckpt] step=3000
4
+ [sde] generated 2/128
5
+ [sde] generated 4/128
6
+ [sde] generated 6/128
7
+ [sde] generated 8/128
8
+ [sde] generated 10/128
9
+ [sde] generated 12/128
10
+ [sde] generated 14/128
11
+ [sde] generated 16/128
12
+ [sde] generated 18/128
13
+ [sde] generated 20/128
14
+ [sde] generated 22/128
15
+ [sde] generated 24/128
16
+ [sde] generated 26/128
17
+ [sde] generated 28/128
18
+ [sde] generated 30/128
19
+ [sde] generated 32/128
20
+ [sde] generated 34/128
21
+ [sde] generated 36/128
22
+ [sde] generated 38/128
23
+ [sde] generated 40/128
24
+ [sde] generated 42/128
25
+ [sde] generated 44/128
26
+ [sde] generated 46/128
27
+ [sde] generated 48/128
28
+ [sde] generated 50/128
29
+ [sde] generated 52/128
30
+ [sde] generated 54/128
31
+ [sde] generated 56/128
32
+ [sde] generated 58/128
33
+ [sde] generated 60/128
34
+ [sde] generated 62/128
35
+ [sde] generated 64/128
36
+ [sde] generated 66/128
37
+ [sde] generated 68/128
38
+ [sde] generated 70/128
39
+ [sde] generated 72/128
40
+ [sde] generated 74/128
41
+ [sde] generated 76/128
42
+ [sde] generated 78/128
43
+ [sde] generated 80/128
44
+ [sde] generated 82/128
45
+ [sde] generated 84/128
46
+ [sde] generated 86/128
47
+ [sde] generated 88/128
48
+ [sde] generated 90/128
49
+ [sde] generated 92/128
50
+ [sde] generated 94/128
51
+ [sde] generated 96/128
52
+ [sde] generated 98/128
53
+ [sde] generated 100/128
54
+ [sde] generated 102/128
55
+ [sde] generated 104/128
56
+ [sde] generated 106/128
57
+ [sde] generated 108/128
58
+ [sde] generated 110/128
59
+ [sde] generated 112/128
60
+ [sde] generated 114/128
61
+ [sde] generated 116/128
62
+ [sde] generated 118/128
63
+ [sde] generated 120/128
64
+ [sde] generated 122/128
65
+ [sde] generated 124/128
66
+ [sde] generated 126/128
67
+ [sde] generated 128/128
68
+ [score] loading scorer: /e2e-data/evad-tech-vla/wanghan58/models/flowtext_scorers/gpt2-large-standard
69
+ [summary] {
70
+ "type": "summary",
71
+ "checkpoint": "runs/lta_owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_gbs512_b32_8gpu_20k_save1k_gumbelwatch_20260525/step_0003000.pt",
72
+ "step": 3000,
73
+ "decode": {
74
+ "decode_rule": "dirichlet_resample_sde",
75
+ "steps": 128,
76
+ "model_t_mode": "support_t",
77
+ "mean_mode": "endpoint_only",
78
+ "anchor_gamma": 1.0,
79
+ "endpoint_floor": 0.0,
80
+ "concentration_min": 32100.0,
81
+ "concentration_max": 64200.0,
82
+ "endpoint_temp": 1.45,
83
+ "endpoint_temp_start": null,
84
+ "endpoint_temp_end": null,
85
+ "endpoint_projection": "gumbel_softmax",
86
+ "endpoint_top_k": 0,
87
+ "endpoint_top_p": 0.95,
88
+ "gumbel_tau_start": 1.0,
89
+ "gumbel_tau_end": 0.2,
90
+ "gumbel_noise_scale_start": 1.0,
91
+ "gumbel_noise_scale_end": 1.0,
92
+ "ban_special_tokens": false,
93
+ "banned_endpoint_ids": [],
94
+ "support_power": 1.0,
95
+ "semantic_power": 1.0,
96
+ "noise_init": "dirichlet",
97
+ "noise_sigma": -1.0,
98
+ "noise_dirichlet_concentration": 32100.0,
99
+ "sde_resample": "dirichlet",
100
+ "logistic_normal_sigma_min": 0.18,
101
+ "logistic_normal_sigma_max": 3.0,
102
+ "logistic_normal_tau_min": 0.65,
103
+ "logistic_normal_tau_max": 1.0,
104
+ "final_from": "blend_0.5",
105
+ "n_samples": 128,
106
+ "seed": 20260524
107
+ },
108
+ "raw_genppl": {
109
+ "ppl": 4.952944612195395,
110
+ "nll_per_token": 1.599982270865479,
111
+ "tokens": 104505,
112
+ "kept_samples": 128,
113
+ "total_samples": 128,
114
+ "empty_rate": 0.0,
115
+ "skipped_samples": 0
116
+ },
117
+ "stripped_genppl": {
118
+ "ppl": 4.912305141565411,
119
+ "nll_per_token": 1.5917433105695673,
120
+ "tokens": 103284,
121
+ "kept_samples": 128,
122
+ "total_samples": 128,
123
+ "empty_rate": 0.0,
124
+ "skipped_samples": 0
125
+ },
126
+ "diversity": {
127
+ "sample_entropy": 1.1192433330446419,
128
+ "unique_tokens": 237,
129
+ "token_count": 131072,
130
+ "distinct_1": 0.00180816650390625,
131
+ "distinct_2": 0.005452712609970675,
132
+ "top_token_mass": 0.5544662475585938
133
+ }
134
+ }
135
+ [done] docs/lta_samples/metrics_20260525/owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_every1k_sde_gumbel_topp0.95_tau1.0_to_0.2_blend_c32100_64200_n128/lta_owt_t5elf_dirichlet_len1024_Cv_to_2v_mask1_gbs512_b32_8gpu_20k_save1k_gumbelwatch_20260525/step_0003000/sde_steps128_samples128_scored.jsonl
136
+ [watch-gumbel] 2026-05-25_15:42:20 done step_0003000
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/__init__.py ADDED
File without changes
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/__init__.py ADDED
File without changes
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/mt19937-testset-1.csv ADDED
@@ -0,0 +1,1001 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ seed, 0xdeadbeaf
2
+ 0, 0xc816921f
3
+ 1, 0xb3623c6d
4
+ 2, 0x5fa391bb
5
+ 3, 0x40178d9
6
+ 4, 0x7dcc9811
7
+ 5, 0x548eb8e6
8
+ 6, 0x92ba3125
9
+ 7, 0x65fde68d
10
+ 8, 0x2f81ec95
11
+ 9, 0xbd94f7a2
12
+ 10, 0xdc4d9bcc
13
+ 11, 0xa672bf13
14
+ 12, 0xb41113e
15
+ 13, 0xec7e0066
16
+ 14, 0x50239372
17
+ 15, 0xd9d66b1d
18
+ 16, 0xab72a161
19
+ 17, 0xddc2e29f
20
+ 18, 0x7ea29ab4
21
+ 19, 0x80d141ba
22
+ 20, 0xb1c7edf1
23
+ 21, 0x44d29203
24
+ 22, 0xe224d98
25
+ 23, 0x5b3e9d26
26
+ 24, 0x14fd567c
27
+ 25, 0x27d98c96
28
+ 26, 0x838779fc
29
+ 27, 0x92a138a
30
+ 28, 0x5d08965b
31
+ 29, 0x531e0ad6
32
+ 30, 0x984ee8f4
33
+ 31, 0x1ed78539
34
+ 32, 0x32bd6d8d
35
+ 33, 0xc37c8516
36
+ 34, 0x9aef5c6b
37
+ 35, 0x3aacd139
38
+ 36, 0xd96ed154
39
+ 37, 0x489cd1ed
40
+ 38, 0x2cba4b3b
41
+ 39, 0x76c6ae72
42
+ 40, 0x2dae02b9
43
+ 41, 0x52ac5fd6
44
+ 42, 0xc2b5e265
45
+ 43, 0x630e6a28
46
+ 44, 0x3f560d5d
47
+ 45, 0x9315bdf3
48
+ 46, 0xf1055aba
49
+ 47, 0x840e42c6
50
+ 48, 0xf2099c6b
51
+ 49, 0x15ff7696
52
+ 50, 0x7948d146
53
+ 51, 0x97342961
54
+ 52, 0x7a7a21c
55
+ 53, 0xc66f4fb1
56
+ 54, 0x23c4103e
57
+ 55, 0xd7321f98
58
+ 56, 0xeb7efb75
59
+ 57, 0xe02490b5
60
+ 58, 0x2aa02de
61
+ 59, 0x8bee0bf7
62
+ 60, 0xfc2da059
63
+ 61, 0xae835034
64
+ 62, 0x678f2075
65
+ 63, 0x6d03094b
66
+ 64, 0x56455e05
67
+ 65, 0x18b32373
68
+ 66, 0x8ff0356b
69
+ 67, 0x1fe442fb
70
+ 68, 0x3f1ab6c3
71
+ 69, 0xb6fd21b
72
+ 70, 0xfc310eb2
73
+ 71, 0xb19e9a4d
74
+ 72, 0x17ddee72
75
+ 73, 0xfd534251
76
+ 74, 0x9e500564
77
+ 75, 0x9013a036
78
+ 76, 0xcf08f118
79
+ 77, 0x6b6d5969
80
+ 78, 0x3ccf1977
81
+ 79, 0x7cc11497
82
+ 80, 0x651c6ac9
83
+ 81, 0x4d6b104b
84
+ 82, 0x9a28314e
85
+ 83, 0x14c237be
86
+ 84, 0x9cfc8d52
87
+ 85, 0x2947fad5
88
+ 86, 0xd71eff49
89
+ 87, 0x5188730e
90
+ 88, 0x4b894614
91
+ 89, 0xf4fa2a34
92
+ 90, 0x42f7cc69
93
+ 91, 0x4089c9e8
94
+ 92, 0xbf0bbfe4
95
+ 93, 0x3cea65c
96
+ 94, 0xc6221207
97
+ 95, 0x1bb71a8f
98
+ 96, 0x54843fe7
99
+ 97, 0xbc59de4c
100
+ 98, 0x79c6ee64
101
+ 99, 0x14e57a26
102
+ 100, 0x68d88fe
103
+ 101, 0x2b86ef64
104
+ 102, 0x8ffff3c1
105
+ 103, 0x5bdd573f
106
+ 104, 0x85671813
107
+ 105, 0xefe32ca2
108
+ 106, 0x105ded1e
109
+ 107, 0x90ca2769
110
+ 108, 0xb33963ac
111
+ 109, 0x363fbbc3
112
+ 110, 0x3b3763ae
113
+ 111, 0x1d50ab88
114
+ 112, 0xc9ec01eb
115
+ 113, 0xc8bbeada
116
+ 114, 0x5d704692
117
+ 115, 0x5fd9e40
118
+ 116, 0xe61c125
119
+ 117, 0x2fe05792
120
+ 118, 0xda8afb72
121
+ 119, 0x4cbaa653
122
+ 120, 0xdd2243df
123
+ 121, 0x896fd3f5
124
+ 122, 0x5bc23db
125
+ 123, 0xa1c4e807
126
+ 124, 0x57d1a24d
127
+ 125, 0x66503ddc
128
+ 126, 0xcf7c0838
129
+ 127, 0x19e034fc
130
+ 128, 0x66807450
131
+ 129, 0xfc219b3b
132
+ 130, 0xe8a843e7
133
+ 131, 0x9ce61f08
134
+ 132, 0x92b950d6
135
+ 133, 0xce955ec4
136
+ 134, 0xda0d1f0d
137
+ 135, 0x960c6250
138
+ 136, 0x39552432
139
+ 137, 0xde845e84
140
+ 138, 0xff3b4b11
141
+ 139, 0x5d918e6f
142
+ 140, 0xbb930df2
143
+ 141, 0x7cfb0993
144
+ 142, 0x5400e1e9
145
+ 143, 0x3bfa0954
146
+ 144, 0x7e2605fb
147
+ 145, 0x11941591
148
+ 146, 0x887e6994
149
+ 147, 0xdc8bed45
150
+ 148, 0x45b3fb50
151
+ 149, 0xfbdf8358
152
+ 150, 0x41507468
153
+ 151, 0x34c87166
154
+ 152, 0x17f64d77
155
+ 153, 0x3bbaf4f8
156
+ 154, 0x4f26f37e
157
+ 155, 0x4a56ebf2
158
+ 156, 0x81100f1
159
+ 157, 0x96d94eae
160
+ 158, 0xca88fda5
161
+ 159, 0x2eef3a60
162
+ 160, 0x952afbd3
163
+ 161, 0x2bec88c7
164
+ 162, 0x52335c4b
165
+ 163, 0x8296db8e
166
+ 164, 0x4da7d00a
167
+ 165, 0xc00ac899
168
+ 166, 0xadff8c72
169
+ 167, 0xbecf26cf
170
+ 168, 0x8835c83c
171
+ 169, 0x1d13c804
172
+ 170, 0xaa940ddc
173
+ 171, 0x68222cfe
174
+ 172, 0x4569c0e1
175
+ 173, 0x29077976
176
+ 174, 0x32d4a5af
177
+ 175, 0xd31fcdef
178
+ 176, 0xdc60682b
179
+ 177, 0x7c95c368
180
+ 178, 0x75a70213
181
+ 179, 0x43021751
182
+ 180, 0x5e52e0a6
183
+ 181, 0xf7e190b5
184
+ 182, 0xee3e4bb
185
+ 183, 0x2fe3b150
186
+ 184, 0xcf419c07
187
+ 185, 0x478a4570
188
+ 186, 0xe5c3ea50
189
+ 187, 0x417f30a8
190
+ 188, 0xf0cfdaa0
191
+ 189, 0xd1f7f738
192
+ 190, 0x2c70fc23
193
+ 191, 0x54fc89f9
194
+ 192, 0x444dcf01
195
+ 193, 0xec2a002d
196
+ 194, 0xef0c3a88
197
+ 195, 0xde21be9
198
+ 196, 0x88ab3296
199
+ 197, 0x3028897c
200
+ 198, 0x264b200b
201
+ 199, 0xd8ae0706
202
+ 200, 0x9eef901a
203
+ 201, 0xbd1b96e0
204
+ 202, 0xea71366c
205
+ 203, 0x1465b694
206
+ 204, 0x5a794650
207
+ 205, 0x83df52d4
208
+ 206, 0x8262413d
209
+ 207, 0x5bc148c0
210
+ 208, 0xe0ecd80c
211
+ 209, 0x40649571
212
+ 210, 0xb4d2ee5f
213
+ 211, 0xedfd7d09
214
+ 212, 0xa082e25f
215
+ 213, 0xc62992d1
216
+ 214, 0xbc7e65ee
217
+ 215, 0x5499cf8a
218
+ 216, 0xac28f775
219
+ 217, 0x649840fb
220
+ 218, 0xd4c54805
221
+ 219, 0x1d166ba6
222
+ 220, 0xbeb1171f
223
+ 221, 0x45b66703
224
+ 222, 0x78c03349
225
+ 223, 0x38d2a6ff
226
+ 224, 0x935cae8b
227
+ 225, 0x1d07dc3f
228
+ 226, 0x6c1ed365
229
+ 227, 0x579fc585
230
+ 228, 0x1320c0ec
231
+ 229, 0x632757eb
232
+ 230, 0xd265a397
233
+ 231, 0x70e9b6c2
234
+ 232, 0xc81e322c
235
+ 233, 0xa27153cf
236
+ 234, 0x2118ba19
237
+ 235, 0x514ec400
238
+ 236, 0x2bd0ecd6
239
+ 237, 0xc3e7dae3
240
+ 238, 0xfa39355e
241
+ 239, 0x48f23cc1
242
+ 240, 0xbcf75948
243
+ 241, 0x53ccc70c
244
+ 242, 0x75346423
245
+ 243, 0x951181e0
246
+ 244, 0x348e90df
247
+ 245, 0x14365d7f
248
+ 246, 0xfbc95d7a
249
+ 247, 0xdc98a9e6
250
+ 248, 0xed202df7
251
+ 249, 0xa59ec913
252
+ 250, 0x6b6e9ae2
253
+ 251, 0x1697f265
254
+ 252, 0x15d322d0
255
+ 253, 0xa2e7ee0a
256
+ 254, 0x88860b7e
257
+ 255, 0x455d8b9d
258
+ 256, 0x2f5c59cb
259
+ 257, 0xac49c9f1
260
+ 258, 0xa6a6a039
261
+ 259, 0xc057f56b
262
+ 260, 0xf1ff1208
263
+ 261, 0x5eb8dc9d
264
+ 262, 0xe6702509
265
+ 263, 0xe238b0ed
266
+ 264, 0x5ae32e3d
267
+ 265, 0xa88ebbdf
268
+ 266, 0xef885ae7
269
+ 267, 0xafa6d49b
270
+ 268, 0xc94499e0
271
+ 269, 0x1a196325
272
+ 270, 0x88938da3
273
+ 271, 0x14f4345
274
+ 272, 0xd8e33637
275
+ 273, 0xa3551bd5
276
+ 274, 0x73fe35c7
277
+ 275, 0x9561e94b
278
+ 276, 0xd673bf68
279
+ 277, 0x16134872
280
+ 278, 0x68c42f9f
281
+ 279, 0xdf7574c8
282
+ 280, 0x8809bab9
283
+ 281, 0x1432cf69
284
+ 282, 0xafb66bf1
285
+ 283, 0xc184aa7b
286
+ 284, 0xedbf2007
287
+ 285, 0xbd420ce1
288
+ 286, 0x761033a0
289
+ 287, 0xff7e351f
290
+ 288, 0xd6c3780e
291
+ 289, 0x5844416f
292
+ 290, 0xc6c0ee1c
293
+ 291, 0xd2e147db
294
+ 292, 0x92ac601a
295
+ 293, 0x393e846b
296
+ 294, 0x18196cca
297
+ 295, 0x54a22be
298
+ 296, 0x32bab1c4
299
+ 297, 0x60365183
300
+ 298, 0x64fa342
301
+ 299, 0xca24a493
302
+ 300, 0xd8cc8b83
303
+ 301, 0x3faf102b
304
+ 302, 0x6e09bb58
305
+ 303, 0x812f0ea
306
+ 304, 0x592c95d8
307
+ 305, 0xe45ea4c5
308
+ 306, 0x23aebf83
309
+ 307, 0xbd9691d4
310
+ 308, 0xf47b4baa
311
+ 309, 0x4ac7b487
312
+ 310, 0xcce18803
313
+ 311, 0x3377556e
314
+ 312, 0x3ff8e6b6
315
+ 313, 0x99d22063
316
+ 314, 0x23250bec
317
+ 315, 0x4e1f9861
318
+ 316, 0x8554249b
319
+ 317, 0x8635c2fc
320
+ 318, 0xe8426e8a
321
+ 319, 0x966c29d8
322
+ 320, 0x270b6082
323
+ 321, 0x3180a8a1
324
+ 322, 0xe7e1668b
325
+ 323, 0x7f868dc
326
+ 324, 0xcf4c17cf
327
+ 325, 0xe31de4d1
328
+ 326, 0xc8c8aff4
329
+ 327, 0xae8db704
330
+ 328, 0x3c928cc2
331
+ 329, 0xe12cd48
332
+ 330, 0xb33ecd04
333
+ 331, 0xb93d7cbe
334
+ 332, 0x49c69d6a
335
+ 333, 0x7d3bce64
336
+ 334, 0x86bc219
337
+ 335, 0x8408233b
338
+ 336, 0x44dc7479
339
+ 337, 0xdf80d538
340
+ 338, 0xf3db02c3
341
+ 339, 0xbbbd31d7
342
+ 340, 0x121281f
343
+ 341, 0x7521e9a3
344
+ 342, 0x8859675a
345
+ 343, 0x75aa6502
346
+ 344, 0x430ed15b
347
+ 345, 0xecf0a28d
348
+ 346, 0x659774fd
349
+ 347, 0xd58a2311
350
+ 348, 0x512389a9
351
+ 349, 0xff65e1ff
352
+ 350, 0xb6ddf222
353
+ 351, 0xe3458895
354
+ 352, 0x8b13cd6e
355
+ 353, 0xd4a22870
356
+ 354, 0xe604c50c
357
+ 355, 0x27f54f26
358
+ 356, 0x8f7f422f
359
+ 357, 0x9735b4cf
360
+ 358, 0x414072b0
361
+ 359, 0x76a1c6d5
362
+ 360, 0xa2208c06
363
+ 361, 0x83cd0f61
364
+ 362, 0x6c4f7ead
365
+ 363, 0x6553cf76
366
+ 364, 0xeffcf44
367
+ 365, 0x7f434a3f
368
+ 366, 0x9dc364bd
369
+ 367, 0x3cdf52ed
370
+ 368, 0xad597594
371
+ 369, 0x9c3e211b
372
+ 370, 0x6c04a33f
373
+ 371, 0x885dafa6
374
+ 372, 0xbbdaca71
375
+ 373, 0x7ae5dd5c
376
+ 374, 0x37675644
377
+ 375, 0x251853c6
378
+ 376, 0x130b086b
379
+ 377, 0x143fa54b
380
+ 378, 0x54cdc282
381
+ 379, 0x9faff5b3
382
+ 380, 0x502a5c8b
383
+ 381, 0xd9524550
384
+ 382, 0xae221aa6
385
+ 383, 0x55cf759b
386
+ 384, 0x24782da4
387
+ 385, 0xd715d815
388
+ 386, 0x250ea09a
389
+ 387, 0x4e0744ac
390
+ 388, 0x11e15814
391
+ 389, 0xabe5f9df
392
+ 390, 0xc8146350
393
+ 391, 0xfba67d9b
394
+ 392, 0x2b82e42f
395
+ 393, 0xd4ea96fc
396
+ 394, 0x5ffc179e
397
+ 395, 0x1598bafe
398
+ 396, 0x7fb6d662
399
+ 397, 0x1a12a0db
400
+ 398, 0x450cee4a
401
+ 399, 0x85f8e12
402
+ 400, 0xce71b594
403
+ 401, 0xd4bb1d19
404
+ 402, 0x968f379d
405
+ 403, 0x54cc1d52
406
+ 404, 0x467e6066
407
+ 405, 0x7da5f9a9
408
+ 406, 0x70977034
409
+ 407, 0x49e65c4b
410
+ 408, 0xd08570d1
411
+ 409, 0x7acdf60b
412
+ 410, 0xdffa038b
413
+ 411, 0x9ce14e4c
414
+ 412, 0x107cbbf8
415
+ 413, 0xdd746ca0
416
+ 414, 0xc6370a46
417
+ 415, 0xe7f83312
418
+ 416, 0x373fa9ce
419
+ 417, 0xd822a2c6
420
+ 418, 0x1d4efea6
421
+ 419, 0xc53dcadb
422
+ 420, 0x9b4e898f
423
+ 421, 0x71daa6bf
424
+ 422, 0x7a0bc78b
425
+ 423, 0xd7b86f50
426
+ 424, 0x1b8b3286
427
+ 425, 0xcf9425dd
428
+ 426, 0xd5263220
429
+ 427, 0x4ea0b647
430
+ 428, 0xc767fe64
431
+ 429, 0xcfc5e67
432
+ 430, 0xcc6a2942
433
+ 431, 0xa51eff00
434
+ 432, 0x76092e1b
435
+ 433, 0xf606e80f
436
+ 434, 0x824b5e20
437
+ 435, 0xebb55e14
438
+ 436, 0x783d96a6
439
+ 437, 0x10696512
440
+ 438, 0x17ee510a
441
+ 439, 0x3ab70a1f
442
+ 440, 0xcce6b210
443
+ 441, 0x8f72f0fb
444
+ 442, 0xf0610b41
445
+ 443, 0x83d01fb5
446
+ 444, 0x6b3de36
447
+ 445, 0xe4c2e84f
448
+ 446, 0x9c43bb15
449
+ 447, 0xddf2905
450
+ 448, 0x7dd63556
451
+ 449, 0x3662ca09
452
+ 450, 0xfb81f35b
453
+ 451, 0xc2c8a72a
454
+ 452, 0x8e93c37
455
+ 453, 0xa93da2d4
456
+ 454, 0xa03af8f1
457
+ 455, 0x8d75159a
458
+ 456, 0x15f010b0
459
+ 457, 0xa296ab06
460
+ 458, 0xe55962ba
461
+ 459, 0xeae700a9
462
+ 460, 0xe388964a
463
+ 461, 0x917f2bec
464
+ 462, 0x1c203fea
465
+ 463, 0x792a01ba
466
+ 464, 0xa93a80ac
467
+ 465, 0x9eb8a197
468
+ 466, 0x56c0bc73
469
+ 467, 0xb8f05799
470
+ 468, 0xf429a8c8
471
+ 469, 0xb92cee42
472
+ 470, 0xf8864ec
473
+ 471, 0x62f2518a
474
+ 472, 0x3a7bfa3e
475
+ 473, 0x12e56e6d
476
+ 474, 0xd7a18313
477
+ 475, 0x41fa3899
478
+ 476, 0xa09c4956
479
+ 477, 0xebcfd94a
480
+ 478, 0xc485f90b
481
+ 479, 0x4391ce40
482
+ 480, 0x742a3333
483
+ 481, 0xc932f9e5
484
+ 482, 0x75c6c263
485
+ 483, 0x80937f0
486
+ 484, 0xcf21833c
487
+ 485, 0x16027520
488
+ 486, 0xd42e669f
489
+ 487, 0xb0f01fb7
490
+ 488, 0xb35896f1
491
+ 489, 0x763737a9
492
+ 490, 0x1bb20209
493
+ 491, 0x3551f189
494
+ 492, 0x56bc2602
495
+ 493, 0xb6eacf4
496
+ 494, 0x42ec4d11
497
+ 495, 0x245cc68
498
+ 496, 0xc27ac43b
499
+ 497, 0x9d903466
500
+ 498, 0xce3f0c05
501
+ 499, 0xb708c31c
502
+ 500, 0xc0fd37eb
503
+ 501, 0x95938b2c
504
+ 502, 0xf20175a7
505
+ 503, 0x4a86ee9b
506
+ 504, 0xbe039a58
507
+ 505, 0xd41cabe7
508
+ 506, 0x83bc99ba
509
+ 507, 0x761d60e1
510
+ 508, 0x7737cc2e
511
+ 509, 0x2b82fc4b
512
+ 510, 0x375aa401
513
+ 511, 0xfe9597a0
514
+ 512, 0x5543806a
515
+ 513, 0x44f31238
516
+ 514, 0x7df31538
517
+ 515, 0x74cfa770
518
+ 516, 0x8755d881
519
+ 517, 0x1fde665a
520
+ 518, 0xda8bf315
521
+ 519, 0x973d8e95
522
+ 520, 0x72205228
523
+ 521, 0x8fe59717
524
+ 522, 0x7bb90b34
525
+ 523, 0xef6ed945
526
+ 524, 0x16fd4a38
527
+ 525, 0x5db44de1
528
+ 526, 0xf09f93b3
529
+ 527, 0xe84824cc
530
+ 528, 0x945bb50e
531
+ 529, 0xd0be4aa5
532
+ 530, 0x47c277c2
533
+ 531, 0xd3800c28
534
+ 532, 0xac1c33ec
535
+ 533, 0xd3dacce
536
+ 534, 0x811c8387
537
+ 535, 0x6761b36
538
+ 536, 0x70d3882f
539
+ 537, 0xd6e62e3a
540
+ 538, 0xea25daa2
541
+ 539, 0xb07f39d1
542
+ 540, 0x391d89d7
543
+ 541, 0x84b6fb5e
544
+ 542, 0x3dda3fca
545
+ 543, 0x229e80a4
546
+ 544, 0x3d94a4b7
547
+ 545, 0x5d3d576a
548
+ 546, 0xad7818a0
549
+ 547, 0xce23b03a
550
+ 548, 0x7aa2079c
551
+ 549, 0x9a6be555
552
+ 550, 0x83f3b34a
553
+ 551, 0x1848f9d9
554
+ 552, 0xd8fefc1c
555
+ 553, 0x48e6ce48
556
+ 554, 0x52e55750
557
+ 555, 0xf41a71cf
558
+ 556, 0xba08e259
559
+ 557, 0xfaf06a15
560
+ 558, 0xeaaac0fb
561
+ 559, 0x34f90098
562
+ 560, 0xb1dfffbb
563
+ 561, 0x718daec2
564
+ 562, 0xab4dda21
565
+ 563, 0xd27cc1ee
566
+ 564, 0x4aafbc4c
567
+ 565, 0x356dfb4f
568
+ 566, 0x83fcdfd6
569
+ 567, 0x8f0bcde0
570
+ 568, 0x4363f844
571
+ 569, 0xadc0f4d5
572
+ 570, 0x3bde994e
573
+ 571, 0x3884d452
574
+ 572, 0x21876b4a
575
+ 573, 0x9c985398
576
+ 574, 0xca55a226
577
+ 575, 0x3a88c583
578
+ 576, 0x916dc33c
579
+ 577, 0x8f67d1d7
580
+ 578, 0x3b26a667
581
+ 579, 0xe4ddeb4b
582
+ 580, 0x1a9d8c33
583
+ 581, 0x81c9b74f
584
+ 582, 0x9ed1e9df
585
+ 583, 0x6e61aecf
586
+ 584, 0x95e95a5d
587
+ 585, 0x68864ff5
588
+ 586, 0xb8fa5b9
589
+ 587, 0x72b1b3de
590
+ 588, 0x5e18a86b
591
+ 589, 0xd7f2337d
592
+ 590, 0xd70e0925
593
+ 591, 0xb573a4c1
594
+ 592, 0xc77b3f8a
595
+ 593, 0x389b20de
596
+ 594, 0x16cf6afb
597
+ 595, 0xa39bd275
598
+ 596, 0xf491cf01
599
+ 597, 0x6f88a802
600
+ 598, 0x8510af05
601
+ 599, 0xe7cd549a
602
+ 600, 0x8603179a
603
+ 601, 0xef43f191
604
+ 602, 0xf9b64c60
605
+ 603, 0xb00254a7
606
+ 604, 0xd7c06a2d
607
+ 605, 0x17e9380b
608
+ 606, 0x529e727b
609
+ 607, 0xaaa8fe0a
610
+ 608, 0xfb64ff4c
611
+ 609, 0xcd75af26
612
+ 610, 0xfb717c87
613
+ 611, 0xa0789899
614
+ 612, 0x10391ec9
615
+ 613, 0x7e9b40b3
616
+ 614, 0x18536554
617
+ 615, 0x728c05f7
618
+ 616, 0x787dca98
619
+ 617, 0xad948d1
620
+ 618, 0x44c18def
621
+ 619, 0x3303f2ec
622
+ 620, 0xa15acb5
623
+ 621, 0xb58d38f4
624
+ 622, 0xfe041ef8
625
+ 623, 0xd151a956
626
+ 624, 0x7b9168e8
627
+ 625, 0x5ebeca06
628
+ 626, 0x90fe95df
629
+ 627, 0xf76875aa
630
+ 628, 0xb2e0d664
631
+ 629, 0x2e3253b7
632
+ 630, 0x68e34469
633
+ 631, 0x1f0c2d89
634
+ 632, 0x13a34ac2
635
+ 633, 0x5ffeb841
636
+ 634, 0xe381e91c
637
+ 635, 0xb8549a92
638
+ 636, 0x3f35cf1
639
+ 637, 0xda0f9dcb
640
+ 638, 0xdd9828a6
641
+ 639, 0xe1428f29
642
+ 640, 0xf4db80b5
643
+ 641, 0xdac30af5
644
+ 642, 0x1af1dd17
645
+ 643, 0x9a540254
646
+ 644, 0xcab68a38
647
+ 645, 0x33560361
648
+ 646, 0x2fbf3886
649
+ 647, 0xbc785923
650
+ 648, 0xe081cd10
651
+ 649, 0x8e473356
652
+ 650, 0xd102c357
653
+ 651, 0xeea4fe48
654
+ 652, 0x248d3453
655
+ 653, 0x1da79ac
656
+ 654, 0x815a65ff
657
+ 655, 0x27693e76
658
+ 656, 0xb7d5af40
659
+ 657, 0x6d245d30
660
+ 658, 0x9e06fa8f
661
+ 659, 0xb0570dcb
662
+ 660, 0x469f0005
663
+ 661, 0x3e0ca132
664
+ 662, 0xd89bbf3
665
+ 663, 0xd61ccd47
666
+ 664, 0x6383878
667
+ 665, 0x62b5956
668
+ 666, 0x4dc83675
669
+ 667, 0x93fd8492
670
+ 668, 0x5a0091f5
671
+ 669, 0xc9f9bc3
672
+ 670, 0xa26e7778
673
+ 671, 0xeabf2d01
674
+ 672, 0xe612dc06
675
+ 673, 0x85d89ff9
676
+ 674, 0xd1763179
677
+ 675, 0xcb88947b
678
+ 676, 0x9e8757a5
679
+ 677, 0xe100e85c
680
+ 678, 0x904166eb
681
+ 679, 0x4996243d
682
+ 680, 0x4038e1cb
683
+ 681, 0x2be2c63d
684
+ 682, 0x77017e81
685
+ 683, 0x3b1f556b
686
+ 684, 0x1c785c77
687
+ 685, 0x6869b8bd
688
+ 686, 0xe1217ed4
689
+ 687, 0x4012ab2f
690
+ 688, 0xc06c0d8e
691
+ 689, 0x2122eb68
692
+ 690, 0xad1783fd
693
+ 691, 0x5f0c80e3
694
+ 692, 0x828f7efa
695
+ 693, 0x29328399
696
+ 694, 0xeadf1087
697
+ 695, 0x85dc0037
698
+ 696, 0x9691ef26
699
+ 697, 0xc0947a53
700
+ 698, 0x2a178d2a
701
+ 699, 0x2a2c7e8f
702
+ 700, 0x90378380
703
+ 701, 0xaad8d326
704
+ 702, 0x9cf1c3c8
705
+ 703, 0x84eccd44
706
+ 704, 0x79e61808
707
+ 705, 0x8b3f454e
708
+ 706, 0x209e6e1
709
+ 707, 0x51f88378
710
+ 708, 0xc210226f
711
+ 709, 0xd982adb5
712
+ 710, 0x55d44a31
713
+ 711, 0x9817d443
714
+ 712, 0xa328c626
715
+ 713, 0x13455966
716
+ 714, 0xb8f681d3
717
+ 715, 0x2a3c713b
718
+ 716, 0xc186959b
719
+ 717, 0x814a74b0
720
+ 718, 0xed7bc90
721
+ 719, 0xa88d3d6d
722
+ 720, 0x88a9f561
723
+ 721, 0x73aa1c0a
724
+ 722, 0xdfeff404
725
+ 723, 0xec037e4b
726
+ 724, 0xa5c209f0
727
+ 725, 0xb3a223b4
728
+ 726, 0x24ce3709
729
+ 727, 0x3184c790
730
+ 728, 0xa1398c62
731
+ 729, 0x2f92034e
732
+ 730, 0xbb37a79a
733
+ 731, 0x605287b4
734
+ 732, 0x8faa772c
735
+ 733, 0x6ce56c1d
736
+ 734, 0xc035fb4c
737
+ 735, 0x7cf5b316
738
+ 736, 0x6502645
739
+ 737, 0xa283d810
740
+ 738, 0x778bc2f1
741
+ 739, 0xfdf99313
742
+ 740, 0x1f513265
743
+ 741, 0xbd3837e2
744
+ 742, 0x9b84a9a
745
+ 743, 0x2139ce91
746
+ 744, 0x61a8e890
747
+ 745, 0xf9ff12db
748
+ 746, 0xb43d2ea7
749
+ 747, 0x88532e61
750
+ 748, 0x175a6655
751
+ 749, 0x7a6c4f72
752
+ 750, 0x6dafc1b7
753
+ 751, 0x449b1459
754
+ 752, 0x514f654f
755
+ 753, 0x9a6731e2
756
+ 754, 0x8632da43
757
+ 755, 0xc81b0422
758
+ 756, 0x81fe9005
759
+ 757, 0x15b79618
760
+ 758, 0xb5fa629f
761
+ 759, 0x987a474f
762
+ 760, 0x1c74f54e
763
+ 761, 0xf9743232
764
+ 762, 0xec4b55f
765
+ 763, 0x87d761e5
766
+ 764, 0xd1ad78b7
767
+ 765, 0x453d9350
768
+ 766, 0xc7a7d85
769
+ 767, 0xb2576ff5
770
+ 768, 0xcdde49b7
771
+ 769, 0x8e1f763e
772
+ 770, 0x1338583e
773
+ 771, 0xfd65b9dc
774
+ 772, 0x4f19c4f4
775
+ 773, 0x3a52d73d
776
+ 774, 0xd3509c4c
777
+ 775, 0xda24fe31
778
+ 776, 0xe2de56ba
779
+ 777, 0x2db5e540
780
+ 778, 0x23172734
781
+ 779, 0x4db572f
782
+ 780, 0xeb941718
783
+ 781, 0x84c2649a
784
+ 782, 0x3b1e5b6a
785
+ 783, 0x4c9c61b9
786
+ 784, 0x3bccd11
787
+ 785, 0xb4d7b78e
788
+ 786, 0x48580ae5
789
+ 787, 0xd273ab68
790
+ 788, 0x25c11615
791
+ 789, 0x470b53f6
792
+ 790, 0x329c2068
793
+ 791, 0x1693721b
794
+ 792, 0xf8c9aacf
795
+ 793, 0x4c3d5693
796
+ 794, 0xd778284e
797
+ 795, 0xae1cb24f
798
+ 796, 0x3c11d1b3
799
+ 797, 0xddd2b0c0
800
+ 798, 0x90269fa7
801
+ 799, 0x5666e0a2
802
+ 800, 0xf9f195a4
803
+ 801, 0x61d78eb2
804
+ 802, 0xada5a7c0
805
+ 803, 0xaa272fbe
806
+ 804, 0xba3bae2f
807
+ 805, 0xd0b70fc2
808
+ 806, 0x529f32b
809
+ 807, 0xda7a3e21
810
+ 808, 0x9a776a20
811
+ 809, 0xb21f9635
812
+ 810, 0xb3acc14e
813
+ 811, 0xac55f56
814
+ 812, 0x29dccf41
815
+ 813, 0x32dabdb3
816
+ 814, 0xaa032f58
817
+ 815, 0xfa406af4
818
+ 816, 0xce3c415d
819
+ 817, 0xb44fb4d9
820
+ 818, 0x32248d1c
821
+ 819, 0x680c6440
822
+ 820, 0xae2337b
823
+ 821, 0x294cb597
824
+ 822, 0x5bca48fe
825
+ 823, 0xaef19f40
826
+ 824, 0xad60406
827
+ 825, 0x4781f090
828
+ 826, 0xfd691ffc
829
+ 827, 0xb6568268
830
+ 828, 0xa56c72cb
831
+ 829, 0xf8a9e0fc
832
+ 830, 0x9af4fd02
833
+ 831, 0x2cd30932
834
+ 832, 0x776cefd7
835
+ 833, 0xe31f476e
836
+ 834, 0x6d94a437
837
+ 835, 0xb3cab598
838
+ 836, 0xf582d13f
839
+ 837, 0x3bf8759d
840
+ 838, 0xc3777dc
841
+ 839, 0x5e425ea8
842
+ 840, 0x1c7ff4ed
843
+ 841, 0x1c2e97d1
844
+ 842, 0xc062d2b4
845
+ 843, 0x46dc80e0
846
+ 844, 0xbcdb47e6
847
+ 845, 0x32282fe0
848
+ 846, 0xaba89063
849
+ 847, 0x5e94e9bb
850
+ 848, 0x3e667f78
851
+ 849, 0xea6eb21a
852
+ 850, 0xe56e54e8
853
+ 851, 0xa0383510
854
+ 852, 0x6768fe2b
855
+ 853, 0xb53ac3e0
856
+ 854, 0x779569a0
857
+ 855, 0xeca83c6a
858
+ 856, 0x24db4d2d
859
+ 857, 0x4585f696
860
+ 858, 0xf84748b2
861
+ 859, 0xf6a4dd5b
862
+ 860, 0x31fb524d
863
+ 861, 0x67ab39fe
864
+ 862, 0x5882a899
865
+ 863, 0x9a05fcf6
866
+ 864, 0x712b5674
867
+ 865, 0xe8c6958f
868
+ 866, 0x4b448bb3
869
+ 867, 0x530b9abf
870
+ 868, 0xb491f491
871
+ 869, 0x98352c62
872
+ 870, 0x2d0a50e3
873
+ 871, 0xeb4384da
874
+ 872, 0x36246f07
875
+ 873, 0xcbc5c1a
876
+ 874, 0xae24031d
877
+ 875, 0x44d11ed6
878
+ 876, 0xf07f1608
879
+ 877, 0xf296aadd
880
+ 878, 0x3bcfe3be
881
+ 879, 0x8fa1e7df
882
+ 880, 0xfd317a6e
883
+ 881, 0xe4975c44
884
+ 882, 0x15205892
885
+ 883, 0xa762d4df
886
+ 884, 0xf1167365
887
+ 885, 0x6811cc00
888
+ 886, 0x8315f23
889
+ 887, 0xe045b4b1
890
+ 888, 0xa8496414
891
+ 889, 0xbed313ae
892
+ 890, 0xcdae3ddb
893
+ 891, 0xa9c22c9
894
+ 892, 0x275fab1a
895
+ 893, 0xedd65fa
896
+ 894, 0x4c188229
897
+ 895, 0x63a83e58
898
+ 896, 0x18aa9207
899
+ 897, 0xa41f2e78
900
+ 898, 0xd9f63653
901
+ 899, 0xbe2be73b
902
+ 900, 0xa3364d39
903
+ 901, 0x896d5428
904
+ 902, 0xc737539e
905
+ 903, 0x745a78c6
906
+ 904, 0xf0b2b042
907
+ 905, 0x510773b4
908
+ 906, 0x92ad8e37
909
+ 907, 0x27f2f8c4
910
+ 908, 0x23704cc8
911
+ 909, 0x3d95a77f
912
+ 910, 0xf08587a4
913
+ 911, 0xbd696a25
914
+ 912, 0x948924f3
915
+ 913, 0x8cddb634
916
+ 914, 0xcd2a4910
917
+ 915, 0x8e0e300e
918
+ 916, 0x83815a9b
919
+ 917, 0x67383510
920
+ 918, 0x3c18f0d0
921
+ 919, 0xc7a7bccc
922
+ 920, 0x7cc2d3a2
923
+ 921, 0x52eb2eeb
924
+ 922, 0xe4a257e5
925
+ 923, 0xec76160e
926
+ 924, 0x63f9ad68
927
+ 925, 0x36d0bbbf
928
+ 926, 0x957bc4e4
929
+ 927, 0xc9ed90ff
930
+ 928, 0x4cb6059d
931
+ 929, 0x2f86eca1
932
+ 930, 0x3e3665a3
933
+ 931, 0x9b7eb6f4
934
+ 932, 0x492e7e18
935
+ 933, 0xa098aa51
936
+ 934, 0x7eb568b2
937
+ 935, 0x3fd639ba
938
+ 936, 0x7bebcf1
939
+ 937, 0x99c844ad
940
+ 938, 0x43cb5ec7
941
+ 939, 0x8dfbbef5
942
+ 940, 0x5be413ff
943
+ 941, 0xd93b976d
944
+ 942, 0xc1c7a86d
945
+ 943, 0x1f0e93d0
946
+ 944, 0x498204a2
947
+ 945, 0xe8fe832a
948
+ 946, 0x2236bd7
949
+ 947, 0x89953769
950
+ 948, 0x2acc3491
951
+ 949, 0x2c4f22c6
952
+ 950, 0xd7996277
953
+ 951, 0x3bcdc349
954
+ 952, 0xfc286630
955
+ 953, 0x5f8909fd
956
+ 954, 0x242677c0
957
+ 955, 0x4cb34104
958
+ 956, 0xa6ff8100
959
+ 957, 0x39ea47ec
960
+ 958, 0x9bd54140
961
+ 959, 0x7502ffe8
962
+ 960, 0x7ebef8ae
963
+ 961, 0x1ed8abe4
964
+ 962, 0xfaba8450
965
+ 963, 0xc197b65f
966
+ 964, 0x19431455
967
+ 965, 0xe229c176
968
+ 966, 0xeb2967da
969
+ 967, 0xe0c5dc05
970
+ 968, 0xa84e3227
971
+ 969, 0x10dd9e0f
972
+ 970, 0xbdb70b02
973
+ 971, 0xce24808a
974
+ 972, 0x423edab8
975
+ 973, 0x194caf71
976
+ 974, 0x144f150d
977
+ 975, 0xf811c2d2
978
+ 976, 0xc224ee85
979
+ 977, 0x2b217a5b
980
+ 978, 0xf78a5a79
981
+ 979, 0x6554a4b1
982
+ 980, 0x769582df
983
+ 981, 0xf4b2cf93
984
+ 982, 0x89648483
985
+ 983, 0xb3283a3e
986
+ 984, 0x82b895db
987
+ 985, 0x79388ef0
988
+ 986, 0x54bc42a6
989
+ 987, 0xc4dd39d9
990
+ 988, 0x45b33b7d
991
+ 989, 0x8703b2c1
992
+ 990, 0x1cc94806
993
+ 991, 0xe0f43e49
994
+ 992, 0xcaa7b6bc
995
+ 993, 0x4f88e9af
996
+ 994, 0x1477cce5
997
+ 995, 0x347dd115
998
+ 996, 0x36e335fa
999
+ 997, 0xb93c9a31
1000
+ 998, 0xaac3a175
1001
+ 999, 0x68a19647
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/pcg64-testset-2.csv ADDED
@@ -0,0 +1,1001 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ seed, 0x0
2
+ 0, 0xa30febcfd9c2825f
3
+ 1, 0x4510bdf882d9d721
4
+ 2, 0xa7d3da94ecde8b8
5
+ 3, 0x43b27b61342f01d
6
+ 4, 0xd0327a782cde513b
7
+ 5, 0xe9aa5979a6401c4e
8
+ 6, 0x9b4c7b7180edb27f
9
+ 7, 0xbac0495ff8829a45
10
+ 8, 0x8b2b01e7a1dc7fbf
11
+ 9, 0xef60e8078f56bfed
12
+ 10, 0xd0dbc74d4700374c
13
+ 11, 0xb37868abbe90b0
14
+ 12, 0xdb7ed8bf64e6f5f0
15
+ 13, 0x89910738de7951f
16
+ 14, 0xbacab307c3cfd379
17
+ 15, 0x2cf7c449d8b927a6
18
+ 16, 0xdcf94b3a16db7f0e
19
+ 17, 0x8a9d33d905a8792e
20
+ 18, 0x4cb9eb2014951238
21
+ 19, 0x6c353acf7b26d6f1
22
+ 20, 0x73ff53d673aa30c
23
+ 21, 0x1fd10760015eca68
24
+ 22, 0xabae0aa9021eeba8
25
+ 23, 0xa5ae363a868ee2bb
26
+ 24, 0x9d89e0f041de6631
27
+ 25, 0x6238b133c3991a65
28
+ 26, 0xff49267d75fef51a
29
+ 27, 0xfb180656ce13c53f
30
+ 28, 0xaf7fadf36128712d
31
+ 29, 0xa6847fc6f339c63e
32
+ 30, 0xb03e0b80d71ea5bc
33
+ 31, 0x63905abcb43969af
34
+ 32, 0x2295af3ee00a3bba
35
+ 33, 0xb8b375b994330415
36
+ 34, 0x867d9ef1d8716a3b
37
+ 35, 0x4f6c02f5601b4e18
38
+ 36, 0x7c5fb4c16c470d18
39
+ 37, 0xe3b57986b804b343
40
+ 38, 0xef1d79d212aca692
41
+ 39, 0x5b98774c8806209c
42
+ 40, 0x924fc76bac38a5d1
43
+ 41, 0x5266084c412ddeed
44
+ 42, 0x98240bf9b831d6a3
45
+ 43, 0x5681599e81219442
46
+ 44, 0x6441248fc2ba92bc
47
+ 45, 0xe3e9051a540349ea
48
+ 46, 0x3a2700034390baa3
49
+ 47, 0x9f893155b6d402bc
50
+ 48, 0x158207910c6d8aef
51
+ 49, 0xd5282ab7608c2cbc
52
+ 50, 0xc97f4651669dee4f
53
+ 51, 0x3d4750d95103ed60
54
+ 52, 0xe0614542caac1f04
55
+ 53, 0xefe5092144cfc6c
56
+ 54, 0x560bc486abd7e9ae
57
+ 55, 0x2678b71392daa4b8
58
+ 56, 0x734970d3dc2ba416
59
+ 57, 0xcbdbe849e51e4aaf
60
+ 58, 0x3b0b5e28b491556c
61
+ 59, 0xd51449ac45abd88
62
+ 60, 0x6790b59991f1b7ab
63
+ 61, 0x32d1c039ff2415bc
64
+ 62, 0x173b9772f24f72e0
65
+ 63, 0x9490a9ca9f883b1b
66
+ 64, 0x4c775989e6214222
67
+ 65, 0xac07db37e6ee6114
68
+ 66, 0x331371b2e3f10aee
69
+ 67, 0xf12e5326c21c28e4
70
+ 68, 0x5d77dc280c70d614
71
+ 69, 0x1b01bd17a2f281ec
72
+ 70, 0xa10d3b5882938487
73
+ 71, 0xed5a0033c394ae8f
74
+ 72, 0x70bc8ea568ea44b4
75
+ 73, 0xf4600ae77965e730
76
+ 74, 0x7ff92c0b321ce233
77
+ 75, 0x6cdbc87d0cc1d670
78
+ 76, 0x9ec64f0cf2000eb1
79
+ 77, 0xfebea50259800f68
80
+ 78, 0xf2edf9019a8fd343
81
+ 79, 0x75c584ac042e5468
82
+ 80, 0xc1fa8481d5bf9a1d
83
+ 81, 0x7f57180168514ac2
84
+ 82, 0x878100716b94f81e
85
+ 83, 0xc929406e3af17fd2
86
+ 84, 0x6a26e2c013e4bf4d
87
+ 85, 0xbc071d8848280955
88
+ 86, 0xb60d75abbfd1bdac
89
+ 87, 0xee9b76afeca9fa69
90
+ 88, 0x1d6c399d2f452810
91
+ 89, 0xbaa0bc1621e25c83
92
+ 90, 0xed6ba792f8671ba5
93
+ 91, 0xf7ca02c2ab11d8d7
94
+ 92, 0x3c3cadadf0b21e3
95
+ 93, 0xdd1784571e864e9c
96
+ 94, 0xfb2f992015157509
97
+ 95, 0xf50bb9f0d3ced743
98
+ 96, 0x261565f75c3e185f
99
+ 97, 0xf8fe33b284513e60
100
+ 98, 0xe3d2d10b5e024664
101
+ 99, 0xd28717566242cf35
102
+ 100, 0x7ae07d133ac5b789
103
+ 101, 0x3b7ccaaa53ac338e
104
+ 102, 0xcd480bace4871650
105
+ 103, 0xec6c78f923c080e9
106
+ 104, 0x44211d0ff8919d59
107
+ 105, 0x89f79af76d2a45fe
108
+ 106, 0x71583fd8a837548b
109
+ 107, 0xee57269c261511f5
110
+ 108, 0xa5ee8f3b128c5d1
111
+ 109, 0xbb64c20ed0765a17
112
+ 110, 0x9d4790ab2eeaf7e4
113
+ 111, 0x742f3db806d9e98
114
+ 112, 0xb81ec97aed6a0d1b
115
+ 113, 0x41808b34f6a8a23
116
+ 114, 0xc20913af175dfd4d
117
+ 115, 0x834427db263b22bb
118
+ 116, 0xedd9c632e611828a
119
+ 117, 0x10eac8524496f571
120
+ 118, 0xd76091b97eb00ab7
121
+ 119, 0x111298ae9fe95666
122
+ 120, 0x5824b2e2a6719c43
123
+ 121, 0x6e280ec539e934ed
124
+ 122, 0xf74fd832df90083e
125
+ 123, 0x8fee6d0f241c2e97
126
+ 124, 0x4244f331c2f19c3c
127
+ 125, 0x3dde75a845cce97f
128
+ 126, 0xe35bb8e635a9915b
129
+ 127, 0x39d2943037f7932e
130
+ 128, 0x1fe2d134201d0970
131
+ 129, 0x49d00b63c749b804
132
+ 130, 0x960c2942cd4e4e04
133
+ 131, 0x8dd8e009dbc0435f
134
+ 132, 0xcf493495c3a055cd
135
+ 133, 0x8f7b5a1c0f9fe9cd
136
+ 134, 0x49d5f90374641a25
137
+ 135, 0x69b3932073d3524c
138
+ 136, 0xd170603e7de84ee2
139
+ 137, 0xa062ba3ed3539948
140
+ 138, 0xf5861cc5b5d56c82
141
+ 139, 0x5e914998a30c7e76
142
+ 140, 0x8d77f2ad1503c0f1
143
+ 141, 0x980b6a9e3b4181fb
144
+ 142, 0xd9299cd50694c084
145
+ 143, 0x253dc0f8f1cec4c5
146
+ 144, 0x68110fb9d1b3e695
147
+ 145, 0xe8f3120d0aabc461
148
+ 146, 0xb066e7df0dfb042
149
+ 147, 0xd29ce0f797e6b60b
150
+ 148, 0x6a569bb7ca33bd42
151
+ 149, 0xd46e08b2dc2385f8
152
+ 150, 0x28c61d11d055767
153
+ 151, 0x5d73aa3d1a2bb725
154
+ 152, 0x1421191e1c14829a
155
+ 153, 0xa711bfb6423df35e
156
+ 154, 0x461af97a86308006
157
+ 155, 0xb3e1018ff3519367
158
+ 156, 0xf19cf866a268ef2b
159
+ 157, 0x207715eac9199d1d
160
+ 158, 0xdd621c410975b78c
161
+ 159, 0xf390aea68683610
162
+ 160, 0x617a2d107a0047d9
163
+ 161, 0x6e05ac416e5bebf0
164
+ 162, 0x7d253e70506c1bed
165
+ 163, 0xf9f96f4a7dd53810
166
+ 164, 0xc693b29cb1573f73
167
+ 165, 0x4f1146b0020ea544
168
+ 166, 0x45140608fbd40579
169
+ 167, 0xdcf57219828ce6be
170
+ 168, 0xe19d58cca37b5b32
171
+ 169, 0x82bda95b2a161235
172
+ 170, 0x5823c3d8a2b6c9ba
173
+ 171, 0xfeb2e74092fdf89a
174
+ 172, 0x50e1ad1abc8f869d
175
+ 173, 0x2ec63d0c105eb8da
176
+ 174, 0xe14e1c4845a3264a
177
+ 175, 0xcff53670455eb6aa
178
+ 176, 0xaafaccd24619fa3e
179
+ 177, 0xf55a988486e2422a
180
+ 178, 0xecfba16a90ff4d04
181
+ 179, 0xbf8d36c2f644757a
182
+ 180, 0xdc56ed75a0dd6249
183
+ 181, 0x3f45023eff17c3bb
184
+ 182, 0x2428bbfe90023fab
185
+ 183, 0xab892c611adcb70c
186
+ 184, 0xb6f13d8c0c2b9d74
187
+ 185, 0x2ac3fb11d224f2a8
188
+ 186, 0x65433dcfae2d9351
189
+ 187, 0xe906859ae4b45f82
190
+ 188, 0x8fb7f5f093d76a3b
191
+ 189, 0x940dd290b5e88d1a
192
+ 190, 0x31b27d21bef116e7
193
+ 191, 0x86a964e2c83b5296
194
+ 192, 0x85ffd17bc079a9e8
195
+ 193, 0x16c47c724e7ab7f1
196
+ 194, 0xfb6098a9867e7d7f
197
+ 195, 0x9246fb69092c6cb2
198
+ 196, 0x1a4033572760f32
199
+ 197, 0xc5cc568a8b273b84
200
+ 198, 0xfa6f9f2fbdd44abc
201
+ 199, 0x9701b8e087718ba3
202
+ 200, 0x51d6a7dcf73f8f3a
203
+ 201, 0x30008172cc6a972d
204
+ 202, 0xac2ab49a5ca6ac81
205
+ 203, 0x31f28ef79461e54c
206
+ 204, 0x93e35a8da8cc6132
207
+ 205, 0x9a2c58beeba3d5b9
208
+ 206, 0xf6615c1de266ac39
209
+ 207, 0x127ff9f8166b766b
210
+ 208, 0x7ffe380e80a69556
211
+ 209, 0xbe7d2c228e1542f7
212
+ 210, 0x2d5ebb4e50ba1746
213
+ 211, 0x63585761ae1bf684
214
+ 212, 0x1019eb5cee022fea
215
+ 213, 0xb9d3540ab58da30d
216
+ 214, 0x1677f4cb45620eb9
217
+ 215, 0x6524baee51783822
218
+ 216, 0xdf9f2ddcfabb0adc
219
+ 217, 0x78e8acc43b287935
220
+ 218, 0xe9a1974e999222b5
221
+ 219, 0xc41324ec2291e780
222
+ 220, 0xea52abc9ecdcbc9f
223
+ 221, 0x209d7bcd46ec6b04
224
+ 222, 0x12d504c09803db2e
225
+ 223, 0x1200e6bf21475d81
226
+ 224, 0xde6d3c2b35fd2cfc
227
+ 225, 0xa2526900ac33bd3c
228
+ 226, 0x7f1f5290fc432bc5
229
+ 227, 0x29ddfb380a3d69c8
230
+ 228, 0xac79cb6942a2909d
231
+ 229, 0x516996685b67a92a
232
+ 230, 0xb5fc39041cb828bb
233
+ 231, 0x75d9d8ca0644a276
234
+ 232, 0x81e98b76be92a3e9
235
+ 233, 0xca27888fafe12179
236
+ 234, 0x17be2ae039925765
237
+ 235, 0x9429846c0e6d0342
238
+ 236, 0x327dfd50439815e9
239
+ 237, 0xcee20cd7bc254aeb
240
+ 238, 0x7d250389f453f29e
241
+ 239, 0xfd1b232a85c95569
242
+ 240, 0x2ed55fac80f3e9e9
243
+ 241, 0xf6886c20417a1be7
244
+ 242, 0xcd08e61f0b0fdfde
245
+ 243, 0x7b33e34da5c27bff
246
+ 244, 0xd043c4b7d5603dd5
247
+ 245, 0x9a544e4c70a3b686
248
+ 246, 0xa7b60398c381f771
249
+ 247, 0xe9e7a3487c4bd4f2
250
+ 248, 0x10b58fdfe1ff112c
251
+ 249, 0xd5c1c9748c0f4ceb
252
+ 250, 0x61be9d09159d54ff
253
+ 251, 0x5356f51e8239f510
254
+ 252, 0xfe7889d9b202ecef
255
+ 253, 0xc7fc19ca5d263d5d
256
+ 254, 0x7c4c07e61dfd9f69
257
+ 255, 0x6c315fe5015f300a
258
+ 256, 0xe0a5bc00039747b4
259
+ 257, 0x16397fdcf829ee80
260
+ 258, 0xb55aee80d16a5169
261
+ 259, 0xca0609944d007eea
262
+ 260, 0xcc982249f65a02ce
263
+ 261, 0x528161feb149c148
264
+ 262, 0xcbf08ba49b41c006
265
+ 263, 0x39af1ff0b6f14138
266
+ 264, 0x5cc036be69799aec
267
+ 265, 0x6adde125b1db21c5
268
+ 266, 0x8a99d83d6b613b67
269
+ 267, 0x1cd43fca9451f74c
270
+ 268, 0x682dbb26ecc96365
271
+ 269, 0x13b4be2ceb43e3
272
+ 270, 0xbe8fbc3b6f4f581e
273
+ 271, 0xda148a2f4bda5719
274
+ 272, 0x239106ca3319f393
275
+ 273, 0xb42b4dde641f0dd5
276
+ 274, 0xd233cfdf4cb0af74
277
+ 275, 0xfb5919d905589afc
278
+ 276, 0xd802a8860c10b66a
279
+ 277, 0x6c923e1d00e7b5bc
280
+ 278, 0xfacce1134f383b89
281
+ 279, 0xf9570abda7a6d553
282
+ 280, 0x80f0f9796a208f18
283
+ 281, 0xc0e1df5280951c57
284
+ 282, 0xe9f143f08257bbe0
285
+ 283, 0x79e4c6463123d588
286
+ 284, 0xdd2118583f2b1684
287
+ 285, 0xb399ff5f2329fa18
288
+ 286, 0x4b3e9ebae96f813c
289
+ 287, 0xc484dbf247787384
290
+ 288, 0x921865eb97603f2c
291
+ 289, 0x18063c68e257d300
292
+ 290, 0x643181f345e7fc26
293
+ 291, 0x12e0b0e8eadf9fa7
294
+ 292, 0x79e613fe73dfa354
295
+ 293, 0x6db4c59203b7217a
296
+ 294, 0x6c7a0e9ba6139eaf
297
+ 295, 0x9617c7ac4e3f6d97
298
+ 296, 0x1f68a7b4fb1b4b75
299
+ 297, 0xef0b7ab24944f466
300
+ 298, 0xaf1dee1f4be1bc89
301
+ 299, 0xd2e355c959f5fd8d
302
+ 300, 0xe594c3fb95d96efc
303
+ 301, 0x9554766ca3342906
304
+ 302, 0xa4bbdc77d12842c
305
+ 303, 0xb62400211ee489a8
306
+ 304, 0x91abadaaa3bbe67c
307
+ 305, 0xd371eeb91deb42bb
308
+ 306, 0x883bab35cbd2b6e5
309
+ 307, 0xd030c3d9411a9041
310
+ 308, 0xff3c110a858ff000
311
+ 309, 0x59bdf5ca47d0bde7
312
+ 310, 0x2bc80fa3cdba1853
313
+ 311, 0x6444ccb652662cb8
314
+ 312, 0xc0c7e256b9e90339
315
+ 313, 0x70714ea9c9d72302
316
+ 314, 0x96a0142f9d897d27
317
+ 315, 0x209a9097c5a91ef7
318
+ 316, 0xb9e33afc5171e009
319
+ 317, 0x47b37af433a58d40
320
+ 318, 0x30cc4ffbfa831d26
321
+ 319, 0xdcea4a85ff815466
322
+ 320, 0x907d5bd027f2e5cc
323
+ 321, 0x7c081f6852e04a4b
324
+ 322, 0xe61950749c1d502b
325
+ 323, 0x1604e937ee69834a
326
+ 324, 0xb2372d952dd25309
327
+ 325, 0x53f6a5b834c72577
328
+ 326, 0x2ce7a74395e0b694
329
+ 327, 0xacbf9ab4fe91f225
330
+ 328, 0x5ce1e63d3a2bb90f
331
+ 329, 0x54740da3a5ed139b
332
+ 330, 0xf194ddb39f29880b
333
+ 331, 0x3305374f5d8ec08b
334
+ 332, 0x831dd0164927ff4a
335
+ 333, 0x625baa78e4458cf
336
+ 334, 0x29d27dc0a4a71152
337
+ 335, 0xe227bae9a1401034
338
+ 336, 0xca0c209831846b2b
339
+ 337, 0x8e8cc54b08b5a411
340
+ 338, 0x38f2b4acaac27db6
341
+ 339, 0x8ec88baac814e86b
342
+ 340, 0x31c08e46b007bde
343
+ 341, 0xb686c02722794c09
344
+ 342, 0xb77cf8fc682e3907
345
+ 343, 0xa56334e7f606f4b2
346
+ 344, 0x9c80b127bddd5f4f
347
+ 345, 0x12df14834cd858bf
348
+ 346, 0x3f14762a9cf5fb9f
349
+ 347, 0x930a70941ef5779e
350
+ 348, 0x64e96c849c30c080
351
+ 349, 0xfdf53bfba1300484
352
+ 350, 0xec7a9363c21bc616
353
+ 351, 0x26e9fd6a115ecb47
354
+ 352, 0x9707a84b5bc77fbb
355
+ 353, 0xb23b2737b20d5903
356
+ 354, 0x22f4825ae80f6501
357
+ 355, 0x500644b12be6a01b
358
+ 356, 0xb746645b2af082db
359
+ 357, 0xe6af051f697892f8
360
+ 358, 0x577c724248a1cfc6
361
+ 359, 0x3d2b6a434c84eed3
362
+ 360, 0xd260f5efd7328314
363
+ 361, 0x95c16cc84bb3f55c
364
+ 362, 0x7a01b2e4e0e80ca7
365
+ 363, 0x41930c3ce70a0935
366
+ 364, 0x1299bccf39d4e110
367
+ 365, 0x494883ba1a8a87f
368
+ 366, 0x9478ecfe2d918e60
369
+ 367, 0x30ec9a5670cda8af
370
+ 368, 0xf9bc877e833e2b99
371
+ 369, 0x1b83a0acfbb4a8db
372
+ 370, 0x73bc1740c0d18880
373
+ 371, 0x65086ca9773cb3e1
374
+ 372, 0x3b78c3ccd63cff2e
375
+ 373, 0xbfae748795acfb31
376
+ 374, 0xa4c9d5d56a15ba20
377
+ 375, 0xb9cb41721e52b71e
378
+ 376, 0x1532f15d4dc47748
379
+ 377, 0x5a4d647a4b9ee632
380
+ 378, 0x8513c7c5a50898d9
381
+ 379, 0x6d3d98ccd5461b2e
382
+ 380, 0xa65e99be2fe98d6
383
+ 381, 0x31abc8855334a0e5
384
+ 382, 0xf1ed22a661dca5b8
385
+ 383, 0x299e2b63229e03be
386
+ 384, 0xda201a06687bce48
387
+ 385, 0xd27794b302142c55
388
+ 386, 0x642bd3e1c7898a9d
389
+ 387, 0x777f1ff00afa1a87
390
+ 388, 0xd2f1c84fb3877baa
391
+ 389, 0xae417583289191fd
392
+ 390, 0xd641f1d88e0e2d55
393
+ 391, 0xc1f1d98fb5d18ebf
394
+ 392, 0xb0f72aecdadce97b
395
+ 393, 0xe9b8abc764f6018a
396
+ 394, 0xd2a37cff8e890594
397
+ 395, 0x2dd70d631a528771
398
+ 396, 0xbf8ba0478c18e336
399
+ 397, 0x1630bf47f372ce0a
400
+ 398, 0x6d04ea20dc3f46b8
401
+ 399, 0x6591881bf34337f2
402
+ 400, 0x33c149c7eb5b4103
403
+ 401, 0xf01a8c9857c86748
404
+ 402, 0x184348cdfc16d215
405
+ 403, 0x141168b253d2ed7
406
+ 404, 0x52aaf012ef50a6f1
407
+ 405, 0xfda1722387e16f4c
408
+ 406, 0x43c30f57d6c038fa
409
+ 407, 0xd4a8611f5f96d214
410
+ 408, 0x2c512ce17e987f2c
411
+ 409, 0x961ce450f0fa2822
412
+ 410, 0xf55a506ec6cea9cd
413
+ 411, 0xb76d694d9c7f5ef6
414
+ 412, 0xfb029216dbd8e988
415
+ 413, 0x93162501896a0081
416
+ 414, 0xfbbbd2c5ab300f5c
417
+ 415, 0xd648b6da7387d491
418
+ 416, 0xc73b4697471d9d98
419
+ 417, 0xe37412bf1c93ee76
420
+ 418, 0xa1a96d96570e6637
421
+ 419, 0x5b3ab4f82428f65c
422
+ 420, 0x873d849b188aa36f
423
+ 421, 0x39fbee0ffc9fa9ff
424
+ 422, 0xc70d21b744d677fe
425
+ 423, 0x2b8a43c23043d209
426
+ 424, 0x93c33eaa37370d16
427
+ 425, 0x8930ac1880f2b0ef
428
+ 426, 0xac01d27707036af0
429
+ 427, 0xc2af3fee504343a0
430
+ 428, 0x1c1dae2ad5535d97
431
+ 429, 0x9ffc21804b76a480
432
+ 430, 0x69f903412cc13563
433
+ 431, 0x9d3c4e2759a0c47d
434
+ 432, 0xb1a8f894be6302b9
435
+ 433, 0x95e1fd7951479506
436
+ 434, 0xbb9e6c03cd4ae8e3
437
+ 435, 0x85206010c9b737cf
438
+ 436, 0x767e813694d6238c
439
+ 437, 0x4969af329ccbb30a
440
+ 438, 0x3aa9af1075aaea5c
441
+ 439, 0xb1ff519e8118a993
442
+ 440, 0xb21a23a3c91180fe
443
+ 441, 0x320b24582ca3fd88
444
+ 442, 0xf8ca56415fb4e453
445
+ 443, 0xabd0899c07205e77
446
+ 444, 0x87fdc7a44b4ad50f
447
+ 445, 0xd75744911641a278
448
+ 446, 0x7c8c9a65df6fcb95
449
+ 447, 0x79d785e3c7a5b695
450
+ 448, 0x421e4565ba1f592f
451
+ 449, 0x27f87eb2517835cf
452
+ 450, 0xb62cc4297441c83e
453
+ 451, 0xd817a80ac815ca6d
454
+ 452, 0xad84388130df2aa8
455
+ 453, 0x5e6b1640452d6ac8
456
+ 454, 0x936285e15edce2a3
457
+ 455, 0x903bccc4969768e8
458
+ 456, 0xefc2cb7b109d3140
459
+ 457, 0x633e9dfdda2d903a
460
+ 458, 0x2a2f3225925678a1
461
+ 459, 0xe07eac91a27f8547
462
+ 460, 0xe50ced40eda78cb3
463
+ 461, 0xc5b22500e1c7441
464
+ 462, 0x32becf61bca3aa72
465
+ 463, 0xa2e37c4b30671344
466
+ 464, 0xc9f1c1910f45d544
467
+ 465, 0x9b50333b2dcdf730
468
+ 466, 0x310bfd53a1684b94
469
+ 467, 0x1e1dc21e66ac6455
470
+ 468, 0x81876c2bfb1ed5a1
471
+ 469, 0xd0c54a3e25eadc7b
472
+ 470, 0x3791b6fbbd5c7ba0
473
+ 471, 0x133be57356c599fc
474
+ 472, 0x8d1148eb8e83fdea
475
+ 473, 0x311aedba0d8b42cc
476
+ 474, 0x1142ae52745f94bb
477
+ 475, 0xc5f4ab2fbde8c4a3
478
+ 476, 0xd23be827b5b24f6d
479
+ 477, 0x65f95194cd122715
480
+ 478, 0x4b48969d73125922
481
+ 479, 0x46f165052b8ff988
482
+ 480, 0x5c689f94b9275ff4
483
+ 481, 0x93b03823ff2d536b
484
+ 482, 0x871f3775aa4e3523
485
+ 483, 0x5af829f7cc0f66a5
486
+ 484, 0xa32e05739cbeac8c
487
+ 485, 0xacff1856ddace0fe
488
+ 486, 0x8eeb5e7f991a5322
489
+ 487, 0x6325c2720e0dbdea
490
+ 488, 0x9fb817bc4fdf5200
491
+ 489, 0x9786f0d850e43d78
492
+ 490, 0x571f76dd7f9fb77a
493
+ 491, 0x4d9e94e181cbc63f
494
+ 492, 0x8bb632d3376c547a
495
+ 493, 0x9cc26d9efd1c88b9
496
+ 494, 0x9c5d49579df52b0b
497
+ 495, 0x6201abf7e1cda07b
498
+ 496, 0x90d68f0c6c884963
499
+ 497, 0xfc5b66188ef7f561
500
+ 498, 0x6d9303cf2e0e0f95
501
+ 499, 0xd7cfcff535f5ed07
502
+ 500, 0x14d1a1228daa4ac6
503
+ 501, 0xe00ef5762f66ae50
504
+ 502, 0xf113a79471582978
505
+ 503, 0x430985281785dc7a
506
+ 504, 0x31914108c206ed5
507
+ 505, 0x7ba6707b6419971c
508
+ 506, 0x2ec63b033ce112e5
509
+ 507, 0xf8bcd36ced3b41e3
510
+ 508, 0xe5cf908c8010414b
511
+ 509, 0xf5ee224b7c703e30
512
+ 510, 0x9a9733af0b12338b
513
+ 511, 0x83e18cc00ace34f8
514
+ 512, 0xd52cff39e23008b8
515
+ 513, 0xa700578136b9c0c5
516
+ 514, 0x3fa179d32ac51f99
517
+ 515, 0xef2d5eab6d4ad380
518
+ 516, 0x709024a5abd032df
519
+ 517, 0xc607c7ee349ede87
520
+ 518, 0x803d784e9731eb5f
521
+ 519, 0x2ef06f4ba769282d
522
+ 520, 0x4bc1dca1e9f07eb9
523
+ 521, 0x930c958a7a72f94d
524
+ 522, 0x249bc8db2cc7a3bf
525
+ 523, 0x3845305798f9a5d
526
+ 524, 0x6f137eca9ab6f948
527
+ 525, 0xc31f5a963d31bd67
528
+ 526, 0x9d39693d5383626f
529
+ 527, 0x52fb41c335a8b98e
530
+ 528, 0xb79d1a29a06006ec
531
+ 529, 0x7c0926a7a3eda2cc
532
+ 530, 0xffdf5214406fd53e
533
+ 531, 0xc6aa02a7e94282b9
534
+ 532, 0xd4a4431b4aa301ee
535
+ 533, 0x4271cc0f9420d3ab
536
+ 534, 0x26fccd7cc7fc2485
537
+ 535, 0x330594bb945b8d5a
538
+ 536, 0x6ea8eaad12e5cb8c
539
+ 537, 0x831c3467726bede3
540
+ 538, 0x31d1eb10017eaa61
541
+ 539, 0xc7aa75e41508f5cb
542
+ 540, 0xde51810f0cadd0b5
543
+ 541, 0x50e5b3e73692f80b
544
+ 542, 0x82107ec55636e188
545
+ 543, 0x9828ef175d843ab4
546
+ 544, 0xb8edc6a860dd421e
547
+ 545, 0x25c0c138fd537ac3
548
+ 546, 0x47e72a771e8eb563
549
+ 547, 0xbb0f8c5333f4a2cc
550
+ 548, 0x91750d2fb9b2d479
551
+ 549, 0xe662d8f6fe38df36
552
+ 550, 0x72a6d879fb5619f0
553
+ 551, 0x6817c7878dcbf077
554
+ 552, 0x4e7741cb484661e8
555
+ 553, 0x3b3b3ba0be5711bf
556
+ 554, 0xa6989f5d25868765
557
+ 555, 0x43c276398997e4e0
558
+ 556, 0xdcbe16a94da28870
559
+ 557, 0x454936980a699c99
560
+ 558, 0xac614bfa8f0266c6
561
+ 559, 0x9174841392e213d5
562
+ 560, 0xa0e2acffc5fc9d1f
563
+ 561, 0xe53a08a7a0e6521a
564
+ 562, 0x2b845cf7c24172e0
565
+ 563, 0x265a4fc5f7adec0d
566
+ 564, 0x1f34fbe5f1e49420
567
+ 565, 0x139181f6fb647f20
568
+ 566, 0x88c35d46e2fcd05e
569
+ 567, 0x2a6d5b55903c0459
570
+ 568, 0xcea28eb621ad7bf1
571
+ 569, 0x5c9cdc13e7aaa30
572
+ 570, 0x5fe63e14746e7103
573
+ 571, 0x7923e53d73835db9
574
+ 572, 0x376e661210bf1b06
575
+ 573, 0x5b1cab85450efdd5
576
+ 574, 0x3908dc096c70b452
577
+ 575, 0x4825e303cd1f396f
578
+ 576, 0xed476bfd702957c3
579
+ 577, 0x6acc013aff5db743
580
+ 578, 0x62c80b776343d488
581
+ 579, 0x9c75edcd5b012697
582
+ 580, 0xaa053362a3b9770a
583
+ 581, 0xa907e236c7c07e94
584
+ 582, 0x15b2c380451692c0
585
+ 583, 0x94f79142697bd61f
586
+ 584, 0xbc657d31ea98d44f
587
+ 585, 0xcbaa5e52517a1f5e
588
+ 586, 0x96aa2e44a7c4a03f
589
+ 587, 0x216d3c66db2b515d
590
+ 588, 0x157001807e3ca88a
591
+ 589, 0x52b3a596bdd3859a
592
+ 590, 0xed747e7fc5e3adac
593
+ 591, 0x78fd765ddb2c448d
594
+ 592, 0xe53dc7299ed8614e
595
+ 593, 0x75ad41fb1d7a790a
596
+ 594, 0xc14f6b944b0e6cb1
597
+ 595, 0x7c314b69fce3df1c
598
+ 596, 0xb56d82eb740d7abc
599
+ 597, 0x5132a93c41251fdb
600
+ 598, 0xe3ce35bd2a82f958
601
+ 599, 0x440571a981c722f2
602
+ 600, 0x194cdfd9f186bc9
603
+ 601, 0xb89e522a5db00939
604
+ 602, 0xad35f339f68df3c8
605
+ 603, 0xa82ab18420322293
606
+ 604, 0xaffa6df9b72b27c4
607
+ 605, 0x9615694d23beaa2c
608
+ 606, 0x1d82ebe563abad91
609
+ 607, 0xab50ef65fbd94385
610
+ 608, 0x1b070dbd70a9a14
611
+ 609, 0x2ececa796abbadf0
612
+ 610, 0x6bbeafe9e81ab2a2
613
+ 611, 0x60dcd0d2a9b76914
614
+ 612, 0x1e748039ef05c33f
615
+ 613, 0x6d4d17f2213ccdff
616
+ 614, 0x9fa56132957bc987
617
+ 615, 0x60a17185de2428eb
618
+ 616, 0xb56038ddf306479c
619
+ 617, 0x3b1db5df92d06d8b
620
+ 618, 0x24d1bba8bdedf580
621
+ 619, 0xbfb7e6740ebaa4d9
622
+ 620, 0xab31c4473e46f61d
623
+ 621, 0x6deb3cdd8fd5869f
624
+ 622, 0x23032e47746d72d6
625
+ 623, 0xa9e72d734e10f2e8
626
+ 624, 0xbffd199b6157bc23
627
+ 625, 0x29f8254df273fb62
628
+ 626, 0xb076142130ee55ec
629
+ 627, 0x5b0b08374126c309
630
+ 628, 0xea4536aae979521f
631
+ 629, 0xc064e7abec91a174
632
+ 630, 0x46133ef80c59d935
633
+ 631, 0xf0227e2da1b14160
634
+ 632, 0x675a76641e1af5a
635
+ 633, 0x2f50a069b33d198c
636
+ 634, 0x3ded5a65e1d657eb
637
+ 635, 0xbb6999b020694f6b
638
+ 636, 0x86b2f2b33487aed7
639
+ 637, 0x76e14e85f8bfb4cf
640
+ 638, 0x38f7f1e44bd4e0db
641
+ 639, 0xc1a7d41b7e80d4ae
642
+ 640, 0x1dfaaf80bbceb42e
643
+ 641, 0x3f51c11497720c2b
644
+ 642, 0xce6da1415ddb8b80
645
+ 643, 0x7377d8bcd359b5f3
646
+ 644, 0xe077208f3f810aca
647
+ 645, 0x9a06a8a2dacbffce
648
+ 646, 0xca1f99156b09b735
649
+ 647, 0x2ff9a93064d91451
650
+ 648, 0x50f3ea93f351a7ef
651
+ 649, 0x606fceccb07054de
652
+ 650, 0x7e83d6d2f8f6685d
653
+ 651, 0x78f3995291c5d407
654
+ 652, 0xd28d2460e22d0228
655
+ 653, 0x2c5636f68a0054dd
656
+ 654, 0xd9fafb1c56c8f6cb
657
+ 655, 0xe39889b5f9d74464
658
+ 656, 0x1355372bf5db2cc1
659
+ 657, 0x26768426b9ac323
660
+ 658, 0x4af1dbdc1111fd89
661
+ 659, 0x66973587943b927f
662
+ 660, 0xf86f5f50684dfb1d
663
+ 661, 0x1247d574ff79b534
664
+ 662, 0xc8039f3259210fe2
665
+ 663, 0x79b573235c92a9f5
666
+ 664, 0x213f642d8450e2f0
667
+ 665, 0x5db7706973376566
668
+ 666, 0x6182c12e69b373d7
669
+ 667, 0x3e5ac47300aec07f
670
+ 668, 0x4b5b6c57b1574376
671
+ 669, 0x6b7fcceefd56b17c
672
+ 670, 0xf656c3455cb9d4b8
673
+ 671, 0x7577e2e13329721f
674
+ 672, 0xf33c0c53ce956e8d
675
+ 673, 0x7d0f328ee356174
676
+ 674, 0x10ec9a168088686e
677
+ 675, 0x71ef1776d062dfa
678
+ 676, 0xaa7b590a488a6bc4
679
+ 677, 0x38612b6dd8049a1c
680
+ 678, 0x939045e36874f731
681
+ 679, 0xcb9d1d74c56d5ac9
682
+ 680, 0x54f1c1c8fef1d8ff
683
+ 681, 0x3ee4b85c8c7e939e
684
+ 682, 0xb9b4608e019f352c
685
+ 683, 0x79d4701275d12e6a
686
+ 684, 0x2632a2d9835c7f19
687
+ 685, 0x1662cd9fba293692
688
+ 686, 0xbcb70265115ee944
689
+ 687, 0xdc43fb9761468604
690
+ 688, 0xe3eec4e7d3871352
691
+ 689, 0x829531753226989d
692
+ 690, 0x2748cc67f540e074
693
+ 691, 0x39c4af25d607837d
694
+ 692, 0x741a243f4cb5df99
695
+ 693, 0xda1353287e18b49a
696
+ 694, 0xa6735689d751ea74
697
+ 695, 0x46326d587340ce0b
698
+ 696, 0xc18531df4550012b
699
+ 697, 0x6f7901e05dd4b818
700
+ 698, 0xfb966afc4c001d63
701
+ 699, 0x6dc10fca67a9cfdb
702
+ 700, 0xd6527ffadf0feaae
703
+ 701, 0x3b900172045e25d
704
+ 702, 0xb7dd594cdded6a46
705
+ 703, 0x6602aee7ec1599fc
706
+ 704, 0x7fbf12f23747546a
707
+ 705, 0x32e63f662bd2de0d
708
+ 706, 0xedf47770b67ed641
709
+ 707, 0x331bef83481c5c2a
710
+ 708, 0x8fc4256fdf05158c
711
+ 709, 0x98eba48dabccf5e0
712
+ 710, 0xdbc2f2cdb7b1c154
713
+ 711, 0x7777755616517ad3
714
+ 712, 0xd473c147d2628ac1
715
+ 713, 0x861e15d1d760b5a7
716
+ 714, 0xf4d25926405ecb07
717
+ 715, 0xb7739c69effff86e
718
+ 716, 0xe97fbafa6f96830c
719
+ 717, 0xf13e8a334e8bede1
720
+ 718, 0xcd60010cba4ee4f9
721
+ 719, 0x1f537ac2b82e6008
722
+ 720, 0x1fda8d781a89140a
723
+ 721, 0x9dc204f3f4a463f0
724
+ 722, 0x456dcd18eb56a1ab
725
+ 723, 0x629957bc87bd16a1
726
+ 724, 0x2c8000ddb8c75253
727
+ 725, 0xc31dae9ec8449284
728
+ 726, 0xdac05c8baa2b691a
729
+ 727, 0x21ff7be9ffa3e7ac
730
+ 728, 0x844f4b5ed4ee08d0
731
+ 729, 0x651f913fd636c994
732
+ 730, 0xca3e71a2110b2d49
733
+ 731, 0x7709bc42253ed09d
734
+ 732, 0xbb164d45b6569d43
735
+ 733, 0x90ec2f040c20a112
736
+ 734, 0xfa6e77e9166f5be4
737
+ 735, 0x6b6d12c1842d587d
738
+ 736, 0xfcd7ff8466e25e2a
739
+ 737, 0x6a5a2ed8bd971297
740
+ 738, 0x2ec35f6bba5adcbc
741
+ 739, 0xc83676e16651249a
742
+ 740, 0x458f6064cefe10ba
743
+ 741, 0x90d54d527e6cd028
744
+ 742, 0xa5613e88db27c388
745
+ 743, 0x331e0c7d85aa1abc
746
+ 744, 0x8cee4977e210358
747
+ 745, 0xfcae379aa6cbff8e
748
+ 746, 0xd1407afc97a57e86
749
+ 747, 0x1fab25c864f094ae
750
+ 748, 0xd914864a63004552
751
+ 749, 0x4214d226a20f1384
752
+ 750, 0x3f4e0d80c488b715
753
+ 751, 0xc5ca2f654024b7c8
754
+ 752, 0xc1e27a124e7c821c
755
+ 753, 0xd890a915ffc7918c
756
+ 754, 0x22fba040ce51a9f8
757
+ 755, 0xbf61cebd8891617a
758
+ 756, 0x7846609ee228e319
759
+ 757, 0x536d1854375509b8
760
+ 758, 0xbbfb45fc6e666f50
761
+ 759, 0xd85b4c0527f9d7d6
762
+ 760, 0x528cc9c7fa2a84c8
763
+ 761, 0x27a1baece647f2cb
764
+ 762, 0xfddf0cb92fe09dc3
765
+ 763, 0xeb5008fe965d8d96
766
+ 764, 0x4a3307937eb2e5c8
767
+ 765, 0xd07d74c240c6c363
768
+ 766, 0x16f62290179d1bbf
769
+ 767, 0xe99c9bcc9cb1ece7
770
+ 768, 0xc64f9be03c8a93be
771
+ 769, 0x32659effaf666c1f
772
+ 770, 0x4bb228cfb30b6672
773
+ 771, 0x98764870842068a5
774
+ 772, 0x5b12ef2d2cd8bdcc
775
+ 773, 0xbc79d1c1b41f28b8
776
+ 774, 0x97a517cf3279fc9a
777
+ 775, 0x34ffd46c1d4d6025
778
+ 776, 0x9c302307ee25c8f0
779
+ 777, 0x399604eed1f18a8
780
+ 778, 0x1c9b813c2043142a
781
+ 779, 0x2944ea5e55267fe9
782
+ 780, 0x5a8a9f5e728ea667
783
+ 781, 0x30c8440adb804a0
784
+ 782, 0xee0e6b627099a937
785
+ 783, 0x3d50757ada3c52da
786
+ 784, 0x4548916b32c813ab
787
+ 785, 0x602a186fe5bf109b
788
+ 786, 0xf0d440a2227ba304
789
+ 787, 0x5a10d4e0ca9ea32b
790
+ 788, 0x6e5eb90da13ba64c
791
+ 789, 0x4c6af8fd04241ab2
792
+ 790, 0xf9eb31d26e093006
793
+ 791, 0x5d674878839fe3ea
794
+ 792, 0x1562b55b2484e47c
795
+ 793, 0xa87188c099c1cb61
796
+ 794, 0xb7736b8aa02a3392
797
+ 795, 0x5f4b301125abb20f
798
+ 796, 0x361d566984637f44
799
+ 797, 0x68c4b3feac8bd0c3
800
+ 798, 0x7066c634dd2503c1
801
+ 799, 0xfecbf7c9441eb6ea
802
+ 800, 0xdbc26ae0fc81436b
803
+ 801, 0x9ef3e2b48252e7a4
804
+ 802, 0x31a49b4c339b37c7
805
+ 803, 0xb01b2a83cf346cf4
806
+ 804, 0xc24dc2347f82fbe3
807
+ 805, 0x134cad272dcd410f
808
+ 806, 0x61260742823ba59c
809
+ 807, 0x53ac4c193a97c730
810
+ 808, 0x9207c9833af34b52
811
+ 809, 0xa72e7ee77078d1f5
812
+ 810, 0x2e6f6e1b05936885
813
+ 811, 0x783b99ce5dbf9464
814
+ 812, 0xfdfeb6f0d027bb44
815
+ 813, 0x40eeb27096f92b0
816
+ 814, 0x5ef96ff5d4a4521f
817
+ 815, 0x5595806ae873718a
818
+ 816, 0x67d449eecf4ca1c3
819
+ 817, 0xde837ab611364f3f
820
+ 818, 0x7034c24d2b139be9
821
+ 819, 0xe21166603e0a9c86
822
+ 820, 0x935694435c1f0d51
823
+ 821, 0x6cb3bec90c126088
824
+ 822, 0x4096ef662b7a9f89
825
+ 823, 0xd2d85b8d238d8c15
826
+ 824, 0xa4ea533ce3ec59b2
827
+ 825, 0x3654729d80a2db29
828
+ 826, 0x214c4cc3906d29d4
829
+ 827, 0x201c447e7588e373
830
+ 828, 0xe8b8f0ae25f683eb
831
+ 829, 0x6744aaf5754e38af
832
+ 830, 0xd1ffb10d6f27a061
833
+ 831, 0xe536733a7b3a6c30
834
+ 832, 0x39f0f66e47cbf2c9
835
+ 833, 0x856a9593526fde2
836
+ 834, 0x2e2a817a0098ea4b
837
+ 835, 0xc5e1eeb551a0e3d3
838
+ 836, 0x3f21e2f5e2d50b2
839
+ 837, 0x906af56c66dd9f8c
840
+ 838, 0x30f6dbd70329fac8
841
+ 839, 0xc443dfddf3c01a60
842
+ 840, 0x7ab85d9aa9675470
843
+ 841, 0x8c9080bd39717bfc
844
+ 842, 0x4b1ccdb3c3597f6f
845
+ 843, 0x74e2542d70ab5d67
846
+ 844, 0xbb3d236aad00f74
847
+ 845, 0xcf3cadf9a2804774
848
+ 846, 0xe851d9750e42bd07
849
+ 847, 0xc0ad82029b1c371f
850
+ 848, 0x7ee119eb552d6c07
851
+ 849, 0xd8024049bd1d784a
852
+ 850, 0xfa67a899760363
853
+ 851, 0xaa7c2f438b178197
854
+ 852, 0xc473674a47ffe064
855
+ 853, 0x539fbe3fc674c270
856
+ 854, 0xdb48484748a76f3b
857
+ 855, 0xc73b2b092060d
858
+ 856, 0xa1d2a15345016f5d
859
+ 857, 0x4d0fe8599f9bba47
860
+ 858, 0xa0edc275e6f8f1d1
861
+ 859, 0x40590a8655bc8d72
862
+ 860, 0x35b4223161f05f75
863
+ 861, 0xa04c0c0f616752dc
864
+ 862, 0x7f371ed2ca45432d
865
+ 863, 0x2ff1a08f75ac6438
866
+ 864, 0xe2dc5c3682282f48
867
+ 865, 0xe1e4179fa98d9013
868
+ 866, 0x8cb083d6843a73d5
869
+ 867, 0xb4c2b5921b706854
870
+ 868, 0x738e14c0e7352445
871
+ 869, 0xcd2b646f91afd8c7
872
+ 870, 0xd5779a5b57a264fd
873
+ 871, 0xc39ff855586c7d07
874
+ 872, 0x3e3f0098c631a859
875
+ 873, 0x644e02fae032110
876
+ 874, 0xa8834613c0a45278
877
+ 875, 0x69482f2c08e10657
878
+ 876, 0xe4ee475bdb87e69a
879
+ 877, 0xdc1ef7b25c0d0019
880
+ 878, 0x88a3fa2be18d8744
881
+ 879, 0x60a02e0b21c5bec7
882
+ 880, 0xb6867b88aa19bc1a
883
+ 881, 0xb599409affcf10eb
884
+ 882, 0xaeaa1778a5e59daa
885
+ 883, 0xd7a91a52c16663e3
886
+ 884, 0x93cb269affe07b1c
887
+ 885, 0x841b6ced3a4ba815
888
+ 886, 0x84541768e1540a5c
889
+ 887, 0xe3943c84f83b3020
890
+ 888, 0x5de366fbd7b45258
891
+ 889, 0xd787cc3bde91a661
892
+ 890, 0x814071446edecb57
893
+ 891, 0x15d8c602a1141514
894
+ 892, 0x72f07bc8002d1d0d
895
+ 893, 0x4a8bd8dc9a1f0f3e
896
+ 894, 0x8723796ae0f20d35
897
+ 895, 0xda7283c2051f73b2
898
+ 896, 0x2df0cc247f90bd3b
899
+ 897, 0x79a8522b968f990a
900
+ 898, 0x951ede190c8b9d02
901
+ 899, 0xc512f1a5b14b018a
902
+ 900, 0xf0e3ddc03b9a4259
903
+ 901, 0x8cf4a35ad312e15f
904
+ 902, 0xebef28926b11094b
905
+ 903, 0x5628ba687325921c
906
+ 904, 0xc3aa75e57edc49c3
907
+ 905, 0xc38382fa98e762ba
908
+ 906, 0x8d209e896285848e
909
+ 907, 0x2c7d6adf592b4a3e
910
+ 908, 0x62de48e36f8338f3
911
+ 909, 0x4a752741e00de30e
912
+ 910, 0xf7855b70f1f6ec2b
913
+ 911, 0xa505fa4428199e43
914
+ 912, 0xe8b6b423b826bbac
915
+ 913, 0x4bd1206cf8786d05
916
+ 914, 0x6dcf040391fe3bf4
917
+ 915, 0x913f500f87e1bba3
918
+ 916, 0x5acf775aa180a5d5
919
+ 917, 0x74dd28d9432ce739
920
+ 918, 0x996c2ff2f0dc2495
921
+ 919, 0x73dbfe6c56effe4
922
+ 920, 0x56fddd25196f5e40
923
+ 921, 0xe87810158f5b7
924
+ 922, 0x7b8795e996383f1f
925
+ 923, 0x9ba5ee7c777c4c82
926
+ 924, 0x17ce3908d270fe1c
927
+ 925, 0x3df9e613c1aedfae
928
+ 926, 0xcdd26871b32fc8e1
929
+ 927, 0xd71cb13afc633979
930
+ 928, 0x63427c8ea9b1c79e
931
+ 929, 0xd070f7664d3b405d
932
+ 930, 0x46f2a9e32d9fb769
933
+ 931, 0xb4c3822a45e9fe9b
934
+ 932, 0x8ba30b97fe6f5ec7
935
+ 933, 0x70aa554ee2fc11f9
936
+ 934, 0xa80c99dbe0cfcfaf
937
+ 935, 0x36d9250cb2d68ed
938
+ 936, 0x2995e4b9e1cd1db4
939
+ 937, 0x4b3803ba57fc570f
940
+ 938, 0xae3959e7d740eaa5
941
+ 939, 0xb4cbd6662adbae08
942
+ 940, 0xae46576446e8dbc4
943
+ 941, 0xc4828e008a9a8a54
944
+ 942, 0x145d7db8e6554b2f
945
+ 943, 0x1b1b8916a730c371
946
+ 944, 0xdaf84b2bebe31963
947
+ 945, 0x5b59b80ef23a2403
948
+ 946, 0x9180c7e89cab6fd3
949
+ 947, 0x80e58f5411babf34
950
+ 948, 0xa06cf55185b9b005
951
+ 949, 0x13b2c798424173ad
952
+ 950, 0xc510f8e706311d49
953
+ 951, 0x1f974b83b6046d3a
954
+ 952, 0xae6e8e85e822d1c3
955
+ 953, 0x66f2c8dc3274a31a
956
+ 954, 0x7e04dbcbf65bd377
957
+ 955, 0xabf41ede01ec20a4
958
+ 956, 0x5efa0948f6bbb2ea
959
+ 957, 0xbc91c99d8592255
960
+ 958, 0xf6d6917911d86d75
961
+ 959, 0x85ce273d54e9097a
962
+ 960, 0xbdfd30f2420fff92
963
+ 961, 0x8802f02f610b537c
964
+ 962, 0xd1d70037ed543229
965
+ 963, 0x908aaf97f9693a46
966
+ 964, 0x1f6cfeaa0834d53a
967
+ 965, 0xa453fd1648ce04d2
968
+ 966, 0x2c38bb85ebc64af9
969
+ 967, 0xd2daff551c90c4f8
970
+ 968, 0xae5a0d949797d784
971
+ 969, 0xf0974c8552ac9593
972
+ 970, 0xa10b70499f65c693
973
+ 971, 0x39a449ebd594ddff
974
+ 972, 0x8ea090f2b17b9b49
975
+ 973, 0xc592de318090fd83
976
+ 974, 0xb63e4fbc467b6912
977
+ 975, 0x57a0c1c5ce0e4dcc
978
+ 976, 0xa7c517cf3d436b35
979
+ 977, 0xef6dcb0f3fad038b
980
+ 978, 0xaf4fb60315b91287
981
+ 979, 0x5e0776f67304f331
982
+ 980, 0xe927753b8e6f7932
983
+ 981, 0xd3df2dd92559e304
984
+ 982, 0xdaed52aa6af44413
985
+ 983, 0x1b59f4dac1e181f8
986
+ 984, 0x4a73c2293877ef39
987
+ 985, 0xca45d0d015fe44de
988
+ 986, 0x4659c8b7853735a8
989
+ 987, 0x12de6466bdf8adeb
990
+ 988, 0xaeea857a09bfec15
991
+ 989, 0xcc9cf4b3c0b88a23
992
+ 990, 0xa44ae52396a5e1bf
993
+ 991, 0x5847a724305d137f
994
+ 992, 0x8f4d4de223956182
995
+ 993, 0x58254dfada867a8
996
+ 994, 0x900a98222c2f339e
997
+ 995, 0xdb575260935d51d5
998
+ 996, 0x13fb4bfbbc0d7b53
999
+ 997, 0x62213850186bb92b
1000
+ 998, 0x2a34823312c00388
1001
+ 999, 0x6148329042f743b0
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/sfc64-testset-1.csv ADDED
@@ -0,0 +1,1001 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ seed, 0xdeadbeaf
2
+ 0, 0xa475f55fbb6bc638
3
+ 1, 0xb2d594b6c29d971c
4
+ 2, 0x275bc4ece4484fb1
5
+ 3, 0x569be72d9b3492fb
6
+ 4, 0x89a5bb9b206a670c
7
+ 5, 0xd951bfa06afdc3f9
8
+ 6, 0x7ee2e1029d52a265
9
+ 7, 0x12ef1d4de0cb4d4c
10
+ 8, 0x41658ba8f0ef0280
11
+ 9, 0x5b650c82e4fe09c5
12
+ 10, 0x638a9f3e30ec4e94
13
+ 11, 0x147487fb2ba9233e
14
+ 12, 0x89ef035603d2d1fb
15
+ 13, 0xe66ca57a190e6cbe
16
+ 14, 0x330f673740dd61fc
17
+ 15, 0xc71d3dce2f8bb34e
18
+ 16, 0x3c07c39ff150b185
19
+ 17, 0x5df952b6cae8f099
20
+ 18, 0x9f09f2b1f0ceac80
21
+ 19, 0x19598eee2d0c4c67
22
+ 20, 0x64e06483702e0ebd
23
+ 21, 0xda04d1fdb545f7fa
24
+ 22, 0xf2cf53b61a0c4f9b
25
+ 23, 0xf0bb724ce196f66e
26
+ 24, 0x71cefde55d9cf0f
27
+ 25, 0x6323f62824a20048
28
+ 26, 0x1e93604680f14b4e
29
+ 27, 0xd9d8fad1d4654025
30
+ 28, 0xf4ee25af2e76ca08
31
+ 29, 0x6af3325896befa98
32
+ 30, 0xad9e43abf5e04053
33
+ 31, 0xbf930e318ce09de3
34
+ 32, 0x61f9583b4f9ffe76
35
+ 33, 0x9b69d0b3d5ec8958
36
+ 34, 0xa608f250f9b2ca41
37
+ 35, 0x6fdba7073dc2bb5d
38
+ 36, 0xa9d57601efea6d26
39
+ 37, 0xc24a88a994954105
40
+ 38, 0xc728b1f78d88fe5b
41
+ 39, 0x88da88c2b083b3b2
42
+ 40, 0xa9e27f7303c76cfd
43
+ 41, 0xc4c24608c29176eb
44
+ 42, 0x5420b58466b972fd
45
+ 43, 0xd2018a661b6756c8
46
+ 44, 0x7caed83d9573fc7
47
+ 45, 0x562a3d81b849a06a
48
+ 46, 0x16588af120c21f2c
49
+ 47, 0x658109a7e0eb4837
50
+ 48, 0x877aabb14d3822e1
51
+ 49, 0x95704c342c3745fe
52
+ 50, 0xeeb8a0dc81603616
53
+ 51, 0x431bf94889290419
54
+ 52, 0xe4a9410ab92a5863
55
+ 53, 0xbc6be64ea60f12ba
56
+ 54, 0x328a2da920015063
57
+ 55, 0x40f6b3bf8271ae07
58
+ 56, 0x4068ff00a0e854f8
59
+ 57, 0x1b287572ca13fa78
60
+ 58, 0xa11624a600490b99
61
+ 59, 0x4a04ef29eb7150fa
62
+ 60, 0xcc9469ab5ffb739
63
+ 61, 0x99a6a9f8d95e782
64
+ 62, 0x8e90356573e7a070
65
+ 63, 0xa740b8fb415c81c4
66
+ 64, 0x47eccef67447f3da
67
+ 65, 0x2c720afe3a62a49b
68
+ 66, 0xe2a747f0a43eacf4
69
+ 67, 0xba063a87ab165576
70
+ 68, 0xbc1c78ed27feb5a3
71
+ 69, 0x285a19fa3974f9d
72
+ 70, 0x489c61e704f5f0e3
73
+ 71, 0xf5ab04f6b03f238b
74
+ 72, 0x7e25f88138a110dd
75
+ 73, 0xc3d1cef3d7c1f1d1
76
+ 74, 0xc3de6ec64d0d8e00
77
+ 75, 0x73682a15b6cc5088
78
+ 76, 0x6fecbeb319163dc5
79
+ 77, 0x7e100d5defe570a1
80
+ 78, 0xad2af9af076dce57
81
+ 79, 0x3c65100e23cd3a9a
82
+ 80, 0x4b442cc6cfe521bb
83
+ 81, 0xe89dc50f8ab1ef75
84
+ 82, 0x8b3c6fdc2496566
85
+ 83, 0xdfc50042bc2c308c
86
+ 84, 0xe39c5f158b33d2b2
87
+ 85, 0x92f6adefdfeb0ac
88
+ 86, 0xdf5808a949c85b3e
89
+ 87, 0x437384021c9dace9
90
+ 88, 0xa7b5ed0d3d67d8f
91
+ 89, 0xe1408f8b21da3c34
92
+ 90, 0xa1bba125c1e80522
93
+ 91, 0x7611dc4710385264
94
+ 92, 0xb00a46ea84082917
95
+ 93, 0x51bf8002ffa87cef
96
+ 94, 0x9bb81013e9810adc
97
+ 95, 0xd28f6600013541cd
98
+ 96, 0xc2ca3b1fa7791c1f
99
+ 97, 0x47f9ad58f099c82c
100
+ 98, 0x4d1bb9458469caf9
101
+ 99, 0xca0b165b2844257
102
+ 100, 0xc3b2e667d075dc66
103
+ 101, 0xde22f71136a3dbb1
104
+ 102, 0x23b4e3b6f219e4c3
105
+ 103, 0x327e0db4c9782f66
106
+ 104, 0x9365506a6c7a1807
107
+ 105, 0x3e868382dedd3be7
108
+ 106, 0xff04fa6534bcaa99
109
+ 107, 0x96621a8862995305
110
+ 108, 0x81bf39cb5f8e1df7
111
+ 109, 0x79b684bb8c37af7a
112
+ 110, 0xae3bc073c3cde33c
113
+ 111, 0x7805674112c899ac
114
+ 112, 0xd95a27995abb20f2
115
+ 113, 0x71a503c57b105c40
116
+ 114, 0x5ff00d6a73ec8acc
117
+ 115, 0x12f96391d91e47c2
118
+ 116, 0xd55ca097b3bd4947
119
+ 117, 0x794d79d20468b04
120
+ 118, 0x35d814efb0d7a07d
121
+ 119, 0xfa9ac9bd0aae76d3
122
+ 120, 0xa77b8a3711e175cd
123
+ 121, 0xe6694fbf421f9489
124
+ 122, 0xd8f1756525a1a0aa
125
+ 123, 0xe38dfa8426277433
126
+ 124, 0x16b640c269bbcd44
127
+ 125, 0x2a7a5a67ca24cfeb
128
+ 126, 0x669039c28d5344b4
129
+ 127, 0x2a445ee81fd596bb
130
+ 128, 0x600df94cf25607e0
131
+ 129, 0x9358561a7579abff
132
+ 130, 0xee1d52ea179fc274
133
+ 131, 0x21a8b325e89d31be
134
+ 132, 0x36fc0917486eec0a
135
+ 133, 0x3d99f40717a6be9f
136
+ 134, 0x39ac140051ca55ff
137
+ 135, 0xcef7447c26711575
138
+ 136, 0xf22666870eff441d
139
+ 137, 0x4a53c6134e1c7268
140
+ 138, 0xd26de518ad6bdb1b
141
+ 139, 0x1a736bf75b8b0e55
142
+ 140, 0xef1523f4e6bd0219
143
+ 141, 0xb287b32fd615ad92
144
+ 142, 0x2583d6af5e841dd5
145
+ 143, 0x4b9294aae7ca670c
146
+ 144, 0xf5aa4a84174f3ca9
147
+ 145, 0x886300f9e0dc6376
148
+ 146, 0x3611401e475ef130
149
+ 147, 0x69b56432b367e1ac
150
+ 148, 0x30c330e9ab36b7c4
151
+ 149, 0x1e0e73079a85b8d5
152
+ 150, 0x40fdfc7a5bfaecf
153
+ 151, 0xd7760f3e8e75a085
154
+ 152, 0x1cc1891f7f625313
155
+ 153, 0xeece1fe6165b4272
156
+ 154, 0xe61111b0c166a3c1
157
+ 155, 0x2f1201563312f185
158
+ 156, 0xfd10e8ecdd2a57cb
159
+ 157, 0x51cdc8c9dd3a89bf
160
+ 158, 0xed13cc93938b5496
161
+ 159, 0x843816129750526b
162
+ 160, 0xd09995cd6819ada
163
+ 161, 0x4601e778d40607df
164
+ 162, 0xef9df06bd66c2ea0
165
+ 163, 0xae0bdecd3db65d69
166
+ 164, 0xbb921a3c65a4ae9a
167
+ 165, 0xd66698ce8e9361be
168
+ 166, 0xacdc91647b6068f4
169
+ 167, 0xe505ef68f2a5c1c0
170
+ 168, 0xd6e62fd27c6ab137
171
+ 169, 0x6a2ba2c6a4641d86
172
+ 170, 0x9c89143715c3b81
173
+ 171, 0xe408c4e00362601a
174
+ 172, 0x986155cbf5d4bd9d
175
+ 173, 0xb9e6831728c893a7
176
+ 174, 0xb985497c3bf88d8c
177
+ 175, 0xd0d729214b727bec
178
+ 176, 0x4e557f75fece38a
179
+ 177, 0x6572067fdfd623ca
180
+ 178, 0x178d49bb4d5cd794
181
+ 179, 0xe6baf59f60445d82
182
+ 180, 0x5607d53518e3a8d2
183
+ 181, 0xba7931adb6ebbd61
184
+ 182, 0xe853576172611329
185
+ 183, 0xe945daff96000c44
186
+ 184, 0x565b9ba3d952a176
187
+ 185, 0xcdb54d4f88c584c8
188
+ 186, 0x482a7499bee9b5e5
189
+ 187, 0x76560dd0affe825b
190
+ 188, 0x2a56221faa5ca22c
191
+ 189, 0x7729be5b361f5a25
192
+ 190, 0xd6f2195795764876
193
+ 191, 0x59ef7f8f423f18c5
194
+ 192, 0x7ebefed6d02adde1
195
+ 193, 0xcfec7265329c73e5
196
+ 194, 0x4fd8606a5e59881c
197
+ 195, 0x95860982ae370b73
198
+ 196, 0xdecfa33b1f902acc
199
+ 197, 0xf9b8a57400b7c0a6
200
+ 198, 0xd20b822672ec857b
201
+ 199, 0x4eb81084096c7364
202
+ 200, 0xe535c29a44d9b6ad
203
+ 201, 0xdef8b48ebacb2e29
204
+ 202, 0x1063bc2b8ba0e915
205
+ 203, 0xe4e837fb53d76d02
206
+ 204, 0x4df935db53579fb8
207
+ 205, 0xa30a0c8053869a89
208
+ 206, 0xe891ee58a388a7b5
209
+ 207, 0x17931a0c64b8a985
210
+ 208, 0xaf2d350b494ce1b3
211
+ 209, 0x2ab9345ffbcfed82
212
+ 210, 0x7de3fe628a2592f0
213
+ 211, 0x85cf54fab8b7e79d
214
+ 212, 0x42d221520edab71b
215
+ 213, 0x17b695b3af36c233
216
+ 214, 0xa4ffe50fe53eb485
217
+ 215, 0x1102d242db800e4d
218
+ 216, 0xc8dc01f0233b3b6
219
+ 217, 0x984a030321053d36
220
+ 218, 0x27fa8dc7b7112c0e
221
+ 219, 0xba634dd8294e177f
222
+ 220, 0xe67ce34b36332eb
223
+ 221, 0x8f1351e1894fb41a
224
+ 222, 0xb522a3048761fd30
225
+ 223, 0xc350ad9bc6729edc
226
+ 224, 0xe0ed105bd3c805e1
227
+ 225, 0xa14043d2b0825aa7
228
+ 226, 0xee7779ce7fc11fdf
229
+ 227, 0xc0fa8ba23a60ab25
230
+ 228, 0xb596d1ce259afbad
231
+ 229, 0xaa9b8445537fdf62
232
+ 230, 0x770ab2c700762e13
233
+ 231, 0xe812f1183e40cc1
234
+ 232, 0x44bc898e57aefbbd
235
+ 233, 0xdd8a871df785c996
236
+ 234, 0x88836a5e371eb36b
237
+ 235, 0xb6081c9152623f27
238
+ 236, 0x895acbcd6528ca96
239
+ 237, 0xfb67e33ddfbed435
240
+ 238, 0xaf7af47d323ce26
241
+ 239, 0xe354a510c3c39b2d
242
+ 240, 0x5cacdedda0672ba3
243
+ 241, 0xa440d9a2c6c22b09
244
+ 242, 0x6395099f48d64304
245
+ 243, 0xc11cf04c75f655b5
246
+ 244, 0x1c4e054d144ddb30
247
+ 245, 0x3e0c2db89d336636
248
+ 246, 0x127ecf18a5b0b9a7
249
+ 247, 0x3b50551a88ea7a73
250
+ 248, 0xbd27003e47f1f684
251
+ 249, 0xf32d657782baac9b
252
+ 250, 0x727f5cabf020bc9
253
+ 251, 0x39c1c1c226197dc7
254
+ 252, 0x5552c87b35deeb69
255
+ 253, 0x64d54067b5ce493f
256
+ 254, 0x3494b091fe28dda0
257
+ 255, 0xdf0278bc85ee2965
258
+ 256, 0xdef16fec25efbd66
259
+ 257, 0xe2be09f578c4ce28
260
+ 258, 0xd27a9271979d3019
261
+ 259, 0x427f6fcd71845e3
262
+ 260, 0x26b52c5f81ec142b
263
+ 261, 0x98267efc3986ad46
264
+ 262, 0x7bf4165ddb7e4374
265
+ 263, 0xd05f7996d7941010
266
+ 264, 0x3b3991de97b45f14
267
+ 265, 0x9068217fb4f27a30
268
+ 266, 0xd8fe295160afc7f3
269
+ 267, 0x8a159fab4c3bc06f
270
+ 268, 0x57855506d19080b6
271
+ 269, 0x7636df6b3f2367a4
272
+ 270, 0x2844ee3abd1d5ec9
273
+ 271, 0xe5788de061f51c16
274
+ 272, 0x69e78cc9132a164
275
+ 273, 0xacd53cde6d8cd421
276
+ 274, 0xb23f3100068e91da
277
+ 275, 0x4140070a47f53891
278
+ 276, 0xe4a422225a96e53a
279
+ 277, 0xb82a8925a272a2ac
280
+ 278, 0x7c2f9573590fe3b7
281
+ 279, 0xbaf80764db170575
282
+ 280, 0x955abffa54358368
283
+ 281, 0x355ce7460614a869
284
+ 282, 0x3700ede779a4afbf
285
+ 283, 0x10a6ec01d92d68cd
286
+ 284, 0x3308f5a0a4c0afef
287
+ 285, 0x97b892d7601136c9
288
+ 286, 0x4955c3b941b8552e
289
+ 287, 0xca85aa67e941961d
290
+ 288, 0xb1859ae5db28e9d2
291
+ 289, 0x305d072ac1521fbd
292
+ 290, 0xed52a868996085bb
293
+ 291, 0x723bfa6a76358852
294
+ 292, 0x78d946ecd97c5fb3
295
+ 293, 0x39205b30a8e23e79
296
+ 294, 0xb927e3d086baadbe
297
+ 295, 0xa18d6946136e1ff5
298
+ 296, 0xdab6f0b51c1eb5ff
299
+ 297, 0xf0a640bf7a1af60c
300
+ 298, 0xf0e81db09004d0d4
301
+ 299, 0xfe76cebdbe5a4dde
302
+ 300, 0x2dafe9cc3decc376
303
+ 301, 0x4c871fdf1af34205
304
+ 302, 0xe79617d0c8fa893b
305
+ 303, 0xee658aaad3a141f7
306
+ 304, 0xfd91aa74863e19f1
307
+ 305, 0x841b8f55c103cc22
308
+ 306, 0x22766ed65444ad5d
309
+ 307, 0x56d03d1beca6c17a
310
+ 308, 0x5fd4c112c92036ae
311
+ 309, 0x75466ae58a5616dc
312
+ 310, 0xfbf98b1081e802a9
313
+ 311, 0xdc325e957bf6d8f5
314
+ 312, 0xb08da7015ebd19b7
315
+ 313, 0xf25a9c0944f0c073
316
+ 314, 0xf4625bafa0ced718
317
+ 315, 0x4349c9e093a9e692
318
+ 316, 0x75a9ccd4dd8935cb
319
+ 317, 0x7e6cf9e539361e91
320
+ 318, 0x20fdd22fb6edd475
321
+ 319, 0x5973021b57c2311f
322
+ 320, 0x75392403667edc15
323
+ 321, 0xed9b2156ea70d9f1
324
+ 322, 0xf40c114db50b64a0
325
+ 323, 0xe26bb2c9eef20c62
326
+ 324, 0x409c1e3037869f03
327
+ 325, 0xcdfd71fdda3b7f91
328
+ 326, 0xa0dfae46816777d6
329
+ 327, 0xde060a8f61a8deb8
330
+ 328, 0x890e082a8b0ca4fc
331
+ 329, 0xb9f2958eddf2d0db
332
+ 330, 0xd17c148020d20e30
333
+ 331, 0xffdc9cc176fe7201
334
+ 332, 0xffb83d925b764c1
335
+ 333, 0x817ea639e313da8d
336
+ 334, 0xa4dd335dd891ca91
337
+ 335, 0x1342d25a5e81f488
338
+ 336, 0xfa7eb9c3cf466b03
339
+ 337, 0xfe0a423d44b185d0
340
+ 338, 0x101cfd430ab96049
341
+ 339, 0x7b5d3eda9c4504b
342
+ 340, 0xe20ccc006e0193f1
343
+ 341, 0xf54ccddedebc5df0
344
+ 342, 0xc0edd142bd58f1db
345
+ 343, 0x3831f40d378d2430
346
+ 344, 0x80132353f0a88289
347
+ 345, 0x688f23c419d03ef8
348
+ 346, 0x4c6837e697884066
349
+ 347, 0x699387bb2e9a3a8f
350
+ 348, 0x8996f860342448d8
351
+ 349, 0xb0f80dff99bfa5cc
352
+ 350, 0x3e927a7f9ea12c8e
353
+ 351, 0xd7e498d1e5f9dff3
354
+ 352, 0x78ecb97bb3f864cc
355
+ 353, 0x3c4ffd069a014d38
356
+ 354, 0xf8d5073a1e09b4d4
357
+ 355, 0x8717e854f9faef23
358
+ 356, 0xfbcc5478d8d0ad7
359
+ 357, 0xd3cd8b233ca274ff
360
+ 358, 0x8bd8f11f79beb265
361
+ 359, 0xf64498a832d8fd0e
362
+ 360, 0xb01bba75112131ec
363
+ 361, 0x55572445a7869781
364
+ 362, 0x7b56622f18cb3d7a
365
+ 363, 0x7f192c9e075bdb83
366
+ 364, 0xd9a112f836b83ff3
367
+ 365, 0x68673b37269653dc
368
+ 366, 0xe46a9433fb6a0879
369
+ 367, 0x127d756ca4779001
370
+ 368, 0xc1378e8b1e8eab94
371
+ 369, 0x1006edb0f51d078c
372
+ 370, 0xc6dd53961232d926
373
+ 371, 0x9a4aeef44038256d
374
+ 372, 0xd357f4fa652d4f5f
375
+ 373, 0x59f3d2cc3378598
376
+ 374, 0xe76e6207a824a7fc
377
+ 375, 0x5fc5e33712ceffef
378
+ 376, 0x77d24aeb0ccb1adc
379
+ 377, 0x5be4b2826805659e
380
+ 378, 0x257c69d787e64634
381
+ 379, 0x58dd52ca6bc727b1
382
+ 380, 0x3ab997767235ea33
383
+ 381, 0x986a2a7a966fad14
384
+ 382, 0xc900f8b27761dcc4
385
+ 383, 0x44991bdb13795700
386
+ 384, 0xe5c145a4fe733b2
387
+ 385, 0x56f041b56bffe0d3
388
+ 386, 0x5779c4fef8067996
389
+ 387, 0xa0fe8748e829532d
390
+ 388, 0x840c1277d78d9dd4
391
+ 389, 0x37ebcb315432acbc
392
+ 390, 0xf4bc8738433ba3be
393
+ 391, 0x8b122993f2e10062
394
+ 392, 0xe1fe8481f2681ed5
395
+ 393, 0x8e23f1630d9f494a
396
+ 394, 0xda24661a01b7d0b3
397
+ 395, 0x7a02942a179cee36
398
+ 396, 0xf1e08a3c09b71ac
399
+ 397, 0x3dec2cc7ee0bd8fd
400
+ 398, 0x1f3e480113d805d4
401
+ 399, 0xc061b973ad4e3f2c
402
+ 400, 0x6bea750f17a66836
403
+ 401, 0xbc2add72eac84c25
404
+ 402, 0xcff058d3f97934ca
405
+ 403, 0x54ccc30987778ec2
406
+ 404, 0x93449ec1e1469558
407
+ 405, 0xe2ff369eb0c6836
408
+ 406, 0x41c2df2d63bf8e55
409
+ 407, 0xf9302629b6c71be2
410
+ 408, 0xdd30376b8e5ab29a
411
+ 409, 0x12db9e04f911d754
412
+ 410, 0x8d03d6cd359f1b97
413
+ 411, 0xe15956511abf1cee
414
+ 412, 0x9b68e10e2c2fd940
415
+ 413, 0x2e28de6491c1ce53
416
+ 414, 0x52b329b72d0c109d
417
+ 415, 0xc2c0b115f9da2a60
418
+ 416, 0x6ca084105271bbff
419
+ 417, 0x49b92b8676058c1e
420
+ 418, 0x767fc92a70f7e5a3
421
+ 419, 0x87ba4ed4b65a6aa0
422
+ 420, 0xf70b052e0a3975e9
423
+ 421, 0x3e925c3306db9eec
424
+ 422, 0x43253f1d96ac9513
425
+ 423, 0xe3e04f1a1ea454c4
426
+ 424, 0x763e3f4cc81ba0c8
427
+ 425, 0x2a2721ac69265705
428
+ 426, 0xdf3b0ac6416ea214
429
+ 427, 0xa6a6b57450f3e000
430
+ 428, 0xc3d3b1ac7dbfe6ac
431
+ 429, 0xb66e5e6f7d2e4ec0
432
+ 430, 0x43c65296f98f0f04
433
+ 431, 0xdb0f6e3ff974d842
434
+ 432, 0x3d6b48e02ebb203b
435
+ 433, 0xd74674ebf09d8f27
436
+ 434, 0xbe65243c58fc1200
437
+ 435, 0x55eb210a68d42625
438
+ 436, 0x87badab097dbe883
439
+ 437, 0xada3fda85a53824f
440
+ 438, 0xef2791e8f48cd37a
441
+ 439, 0x3fe7fceb927a641a
442
+ 440, 0xd3bffd3ff031ac78
443
+ 441, 0xb94efe03da4d18fb
444
+ 442, 0x162a0ad8da65ea68
445
+ 443, 0x300f234ef5b7e4a6
446
+ 444, 0xa2a8b4c77024e4fb
447
+ 445, 0x5950f095ddd7b109
448
+ 446, 0xded66dd2b1bb02ba
449
+ 447, 0x8ec24b7fa509bcb6
450
+ 448, 0x9bede53d924bdad6
451
+ 449, 0xa9c3f46423be1930
452
+ 450, 0x6dfc90597f8de8b4
453
+ 451, 0xb7419ebc65b434f0
454
+ 452, 0xa6596949238f58b9
455
+ 453, 0x966cbade640829b8
456
+ 454, 0x58c74877bdcbf65e
457
+ 455, 0xaa103b8f89b0c453
458
+ 456, 0x219f0a86e41179a4
459
+ 457, 0x90f534fc06ddc57f
460
+ 458, 0x8db7cdd644f1affa
461
+ 459, 0x38f91de0167127ac
462
+ 460, 0xdcd2a65e4df43daa
463
+ 461, 0x3e04f34a7e01f834
464
+ 462, 0x5b237eea68007768
465
+ 463, 0x7ff4d2b015921768
466
+ 464, 0xf786b286549d3d51
467
+ 465, 0xaefa053fc2c3884c
468
+ 466, 0x8e6a8ff381515d36
469
+ 467, 0x35b94f3d0a1fce3c
470
+ 468, 0x165266d19e9abb64
471
+ 469, 0x1deb5caa5f9d8076
472
+ 470, 0x13ab91290c7cfe9d
473
+ 471, 0x3651ca9856be3e05
474
+ 472, 0xe7b705f6e9cccc19
475
+ 473, 0xd6e7f79668c127ed
476
+ 474, 0xa9faf37154896f92
477
+ 475, 0x89fbf190603e0ab1
478
+ 476, 0xb34d155a86f942d0
479
+ 477, 0xb2d4400a78bfdd76
480
+ 478, 0x7c0946aca8cfb3f0
481
+ 479, 0x7492771591c9d0e8
482
+ 480, 0xd084d95c5ca2eb28
483
+ 481, 0xb18d12bd3a6023e
484
+ 482, 0xea217ed7b864d80b
485
+ 483, 0xe52f69a755dd5c6f
486
+ 484, 0x127133993d81c4aa
487
+ 485, 0xe07188fcf1670bfb
488
+ 486, 0x178fbfe668e4661d
489
+ 487, 0x1c9ee14bb0cda154
490
+ 488, 0x8d043b96b6668f98
491
+ 489, 0xbc858986ec96ca2b
492
+ 490, 0x7660f779d528b6b7
493
+ 491, 0xd448c6a1f74ae1d3
494
+ 492, 0x178e122cfc2a6862
495
+ 493, 0x236f000abaf2d23b
496
+ 494, 0x171b27f3f0921915
497
+ 495, 0x4c3ff07652f50a70
498
+ 496, 0x18663e5e7d3a66ca
499
+ 497, 0xb38c97946c750cc9
500
+ 498, 0xc5031aae6f78f909
501
+ 499, 0x4d1514e2925e95c1
502
+ 500, 0x4c2184a741dabfbb
503
+ 501, 0xfd410364edf77182
504
+ 502, 0xc228157f863ee873
505
+ 503, 0x9856fdc735cc09fc
506
+ 504, 0x660496cd1e41d60e
507
+ 505, 0x2edf1d7e01954c32
508
+ 506, 0xd32e94639bdd98cf
509
+ 507, 0x8e153f48709a77d
510
+ 508, 0x89357f332d2d6561
511
+ 509, 0x1840d512c97085e6
512
+ 510, 0x2f18d035c9e26a85
513
+ 511, 0x77b88b1448b26d5b
514
+ 512, 0xc1ca6ef4cdae0799
515
+ 513, 0xcc203f9e4508165f
516
+ 514, 0xeaf762fbc9e0cbbe
517
+ 515, 0xc070c687f3c4a290
518
+ 516, 0xd49ed321068d5c15
519
+ 517, 0x84a55eec17ee64ee
520
+ 518, 0x4d8ee685298a8871
521
+ 519, 0x9ff5f17d7e029793
522
+ 520, 0x791d7d0d62e46302
523
+ 521, 0xab218b9114e22bc6
524
+ 522, 0x4902b7ab3f7119a7
525
+ 523, 0x694930f2e29b049e
526
+ 524, 0x1a3c90650848999f
527
+ 525, 0x79f1b9d8499c932b
528
+ 526, 0xfacb6d3d55e3c92f
529
+ 527, 0x8fd8b4f25a5da9f5
530
+ 528, 0xd037dcc3a7e62ae7
531
+ 529, 0xfecf57300d8f84f4
532
+ 530, 0x32079b1e1dc12d48
533
+ 531, 0xe5f8f1e62b288f54
534
+ 532, 0x97feba3a9c108894
535
+ 533, 0xd279a51e1899a9a0
536
+ 534, 0xd68eea8e8e363fa8
537
+ 535, 0x7394cf2deeca9386
538
+ 536, 0x5f70b0c80f1dbf10
539
+ 537, 0x8d646916ed40462
540
+ 538, 0xd253bb1c8a12bbb6
541
+ 539, 0x38f399a821fbd73e
542
+ 540, 0x947523a26333ac90
543
+ 541, 0xb52e90affbc52a37
544
+ 542, 0xcf899cd964654da4
545
+ 543, 0xdf66ae9cca8d99e7
546
+ 544, 0x6051478e57c21b6a
547
+ 545, 0xffa7dc975af3c1da
548
+ 546, 0x195c7bff2d1a8f5
549
+ 547, 0x64f12b6575cf984d
550
+ 548, 0x536034cb842cf9e1
551
+ 549, 0x180f247ce5bbfad
552
+ 550, 0x8ced45081b134867
553
+ 551, 0x532bbfdf426710f3
554
+ 552, 0x4747933e74c4f54d
555
+ 553, 0x197a890dc4793401
556
+ 554, 0x76c7cc2bd42fae2
557
+ 555, 0xdabfd67f69675dd0
558
+ 556, 0x85c690a68cdb3197
559
+ 557, 0xe482cec89ce8f92
560
+ 558, 0x20bc9fb7797011b1
561
+ 559, 0x76dc85a2185782ad
562
+ 560, 0x3df37c164422117a
563
+ 561, 0x99211f5d231e0ab0
564
+ 562, 0xef7fd794a0a91f4
565
+ 563, 0x419577151915f5fe
566
+ 564, 0x3ce14a0a7135dae3
567
+ 565, 0x389b57598a075d6a
568
+ 566, 0x8cc2a9d51b5af9aa
569
+ 567, 0xe80a9beffbd13f13
570
+ 568, 0x65e96b22ea8a54d8
571
+ 569, 0x79f38c4164138ede
572
+ 570, 0xd1955846cba03d81
573
+ 571, 0x60359fe58e4f26d6
574
+ 572, 0x4ea724f585f8d13e
575
+ 573, 0x316dfdbadc801a3c
576
+ 574, 0x20aa29b7c6dd66fe
577
+ 575, 0x65eaf83a6a008caa
578
+ 576, 0x407000aff1b9e8cb
579
+ 577, 0xb4d49bfb2b268c40
580
+ 578, 0xd4e6fe8a7a0f14a9
581
+ 579, 0xe34afef924e8f58e
582
+ 580, 0xe377b0c891844824
583
+ 581, 0x29c2e20c112d30c8
584
+ 582, 0x906aad1fe0c18a95
585
+ 583, 0x308385f0efbb6474
586
+ 584, 0xf23900481bf70445
587
+ 585, 0xfdfe3ade7f937a55
588
+ 586, 0xf37aae71c33c4f97
589
+ 587, 0x1c81e3775a8bed85
590
+ 588, 0x7eb5013882ce35ea
591
+ 589, 0x37a1c1692495818d
592
+ 590, 0x3f90ae118622a0ba
593
+ 591, 0x58e4fe6fea29b037
594
+ 592, 0xd10ff1d269808825
595
+ 593, 0xbce30edb60c21bba
596
+ 594, 0x123732329afd6fee
597
+ 595, 0x429b4059f797d840
598
+ 596, 0x421166568a8c4be1
599
+ 597, 0x88f895c424c1bd7f
600
+ 598, 0x2adaf7a7b9f781cb
601
+ 599, 0xa425644b26cb698
602
+ 600, 0x8cc44d2486cc5743
603
+ 601, 0xdb9f357a33abf6ba
604
+ 602, 0x1a57c4ea77a4d70c
605
+ 603, 0x1dea29be75239e44
606
+ 604, 0x463141a137121a06
607
+ 605, 0x8fecfbbe0b8a9517
608
+ 606, 0x92c83984b3566123
609
+ 607, 0x3b1c69180ed28665
610
+ 608, 0x14a6073425ea8717
611
+ 609, 0x71f4c2b3283238d7
612
+ 610, 0xb3d491e3152f19f
613
+ 611, 0x3a0ba3a11ebac5d2
614
+ 612, 0xddb4d1dd4c0f54ac
615
+ 613, 0xdb8f36fe02414035
616
+ 614, 0x1cf5df5031b1902c
617
+ 615, 0x23a20ed12ef95870
618
+ 616, 0xf113e573b2dedcbb
619
+ 617, 0x308e2395cde0a9fa
620
+ 618, 0xd377a22581c3a7da
621
+ 619, 0xe0ced97a947a66fb
622
+ 620, 0xe44f4de9cd754b00
623
+ 621, 0x2344943337d9d1bf
624
+ 622, 0x4b5ae5e2ea6e749c
625
+ 623, 0x9b8d2e3ef41d1c01
626
+ 624, 0x59a5a53ebbd24c6b
627
+ 625, 0x4f7611bf9e8a06fb
628
+ 626, 0xea38c7b61361cd06
629
+ 627, 0xf125a2bfdd2c0c7
630
+ 628, 0x2df8dcb5926b9ebb
631
+ 629, 0x233e18720cc56988
632
+ 630, 0x974c61379b4aa95e
633
+ 631, 0xc7fe24c1c868910b
634
+ 632, 0x818fd1affc82a842
635
+ 633, 0xcee92a952a26d38e
636
+ 634, 0x8962f575ebcbf43
637
+ 635, 0x7770687e3678c460
638
+ 636, 0xdfb1db4ed1298117
639
+ 637, 0xb9db54cb03d434d3
640
+ 638, 0x34aebbf2244257ad
641
+ 639, 0xd836db0cb210c490
642
+ 640, 0x935daed7138957cd
643
+ 641, 0x3cd914b14e7948fd
644
+ 642, 0xd0472e9ed0a0f7f0
645
+ 643, 0xa9df33dca697f75e
646
+ 644, 0x15e9ea259398721a
647
+ 645, 0x23eeba0f970abd60
648
+ 646, 0x2217fdf8bbe99a12
649
+ 647, 0x5ea490a95717b198
650
+ 648, 0xf4e2bfc28280b639
651
+ 649, 0x9d19916072d6f05c
652
+ 650, 0x5e0387cab1734c6a
653
+ 651, 0x93c2c8ac26e5f01e
654
+ 652, 0xb0d934354d957eb1
655
+ 653, 0xee5099a1eef3188c
656
+ 654, 0x8be0abca8edc1115
657
+ 655, 0x989a60845dbf5aa3
658
+ 656, 0x181c7ed964eee892
659
+ 657, 0x49838ea07481288d
660
+ 658, 0x17dbc75d66116b2e
661
+ 659, 0xa4cafb7a87c0117e
662
+ 660, 0xab2d0ae44cdc2e6e
663
+ 661, 0xdf802f2457e7da6
664
+ 662, 0x4b966c4b9187e124
665
+ 663, 0x62de9db6f4811e1a
666
+ 664, 0x1e20485968bc62
667
+ 665, 0xe9ac288265caca94
668
+ 666, 0xc5c694d349aa8c1a
669
+ 667, 0x3d67f2083d9bdf10
670
+ 668, 0x9a2468e503085486
671
+ 669, 0x9d6acd3dc152d1a3
672
+ 670, 0xca951e2aeee8df77
673
+ 671, 0x2707371af9cdd7b0
674
+ 672, 0x2347ae6a4eb5ecbd
675
+ 673, 0x16abe5582cb426f
676
+ 674, 0x523af4ff980bbccb
677
+ 675, 0xb07a0f043e3694aa
678
+ 676, 0x14d7c3da81b2de7
679
+ 677, 0xf471f1b8ac22305b
680
+ 678, 0xdb087ffff9e18520
681
+ 679, 0x1a352db3574359e8
682
+ 680, 0x48d5431502cc7476
683
+ 681, 0x7c9b7e7003dfd1bf
684
+ 682, 0x4f43a48aae987169
685
+ 683, 0x9a5d3eb66dedb3e9
686
+ 684, 0xa7b331af76a9f817
687
+ 685, 0xba440154b118ab2d
688
+ 686, 0x64d22344ce24c9c6
689
+ 687, 0xa22377bd52bd043
690
+ 688, 0x9dfa1bb18ca6c5f7
691
+ 689, 0xdccf44a92f644c8b
692
+ 690, 0xf623d0a49fd18145
693
+ 691, 0x556d5c37978e28b3
694
+ 692, 0xad96e32ce9d2bb8b
695
+ 693, 0x2e479c120be52798
696
+ 694, 0x7501cf871af7b2f7
697
+ 695, 0xd02536a5d026a5b8
698
+ 696, 0x4b37ff53e76ab5a4
699
+ 697, 0xdb3a4039caaeab13
700
+ 698, 0x6cbd65e3b700c7be
701
+ 699, 0x7367abd98761a147
702
+ 700, 0xf4f9ba216a35aa77
703
+ 701, 0xf88ca25ce921eb86
704
+ 702, 0xb211de082ec2cbf2
705
+ 703, 0xdd94aa46ec57e12e
706
+ 704, 0xa967d74ad8210240
707
+ 705, 0xdaa1fada8cfa887
708
+ 706, 0x85901d081c4488ee
709
+ 707, 0xcf67f79a699ef06
710
+ 708, 0x7f2f1f0de921ee14
711
+ 709, 0x28bc61e9d3f2328b
712
+ 710, 0x3332f2963faf18e5
713
+ 711, 0x4167ac71fcf43a6
714
+ 712, 0x843c1746b0160b74
715
+ 713, 0xd9be80070c578a5e
716
+ 714, 0xbd7250c9af1473e7
717
+ 715, 0x43f78afaa3647899
718
+ 716, 0x91c6b5dd715a75a5
719
+ 717, 0x29cc66c8a07bfef3
720
+ 718, 0x3f5c667311dc22be
721
+ 719, 0x4f49cd47958260cd
722
+ 720, 0xbef8be43d920b64e
723
+ 721, 0x7a892a5f13061d8b
724
+ 722, 0x9532f40125c819b1
725
+ 723, 0x924fca3045f8a564
726
+ 724, 0x9b2c6442453b0c20
727
+ 725, 0x7e21009085b8e793
728
+ 726, 0x9b98c17e17af59d2
729
+ 727, 0xba61acb73e3ae89a
730
+ 728, 0xb9d61a710555c138
731
+ 729, 0xc2a425d80978974b
732
+ 730, 0xa275e13592da7d67
733
+ 731, 0xe962103202d9ad0f
734
+ 732, 0xbdf8367a4d6f33fd
735
+ 733, 0xe59beb2f8648bdc8
736
+ 734, 0xb4c387d8fbc4ac1c
737
+ 735, 0x5e3f276b63054b75
738
+ 736, 0xf27e616aa54d8464
739
+ 737, 0x3f271661d1cd7426
740
+ 738, 0x43a69dbee7502c78
741
+ 739, 0x8066fcea6df059a1
742
+ 740, 0x3c10f19409bdc993
743
+ 741, 0x6ba6f43fb21f23e0
744
+ 742, 0x9e182d70a5bccf09
745
+ 743, 0x1520783d2a63a199
746
+ 744, 0xba1dcc0c70b9cace
747
+ 745, 0x1009e1e9b1032d8
748
+ 746, 0xf632f6a95fb0315
749
+ 747, 0x48e711c7114cbfff
750
+ 748, 0xef281dcec67debf7
751
+ 749, 0x33789894d6abf59b
752
+ 750, 0x6c8e541fffbe7f9c
753
+ 751, 0x85417f13b08e0a88
754
+ 752, 0x9a581e36d589608f
755
+ 753, 0x461dca50b1befd35
756
+ 754, 0x5a3231680dde6462
757
+ 755, 0xcc57acf729780b97
758
+ 756, 0x50301efef62e1054
759
+ 757, 0x675d042cd4f6bbc9
760
+ 758, 0x1652fdd3794384c9
761
+ 759, 0x1c93bbeeb763cd4d
762
+ 760, 0x44b7240c4b105242
763
+ 761, 0x4c6af2a1b606ccfb
764
+ 762, 0x18fc43ece2ec1a40
765
+ 763, 0x859a5511aeae8acb
766
+ 764, 0x2f56826f1996ad2f
767
+ 765, 0xa8e95ce8bb363bdf
768
+ 766, 0xf4da396054e50e4b
769
+ 767, 0x5493865e9895883c
770
+ 768, 0x768e4c8b332ac0e3
771
+ 769, 0x32195d2aa583fca5
772
+ 770, 0xf2f353f21266bc15
773
+ 771, 0x43cddf1d021307d
774
+ 772, 0x6031e3aa30300e4a
775
+ 773, 0x4f1298469ac6088f
776
+ 774, 0x4b4d450bafac574e
777
+ 775, 0x23e1cf9c0582a22b
778
+ 776, 0x2e9036980db49cd0
779
+ 777, 0xe4e228b113c411b2
780
+ 778, 0x8bddcdb82b51706
781
+ 779, 0xd2a7ea8288593629
782
+ 780, 0x67fe90e98fdda61
783
+ 781, 0x7b63494dba95717b
784
+ 782, 0x105625904510d782
785
+ 783, 0xdf4aa2242454e50a
786
+ 784, 0x32541d6cd7d6c7e3
787
+ 785, 0x5661fb432591cf3b
788
+ 786, 0xce920a5ed047bce7
789
+ 787, 0xed4178a3c96eea8f
790
+ 788, 0xe378cd996e39863b
791
+ 789, 0x169e1fdc8e2b05e1
792
+ 790, 0xaee1812ef7149a96
793
+ 791, 0x648571c7453d12c5
794
+ 792, 0xb7b6bc9328573c43
795
+ 793, 0xe7fb969078e270d7
796
+ 794, 0xdfc2b1b8985f6e6f
797
+ 795, 0x862b6527ee39a1aa
798
+ 796, 0x1ee329aea91d7882
799
+ 797, 0x20d25324f2fe704
800
+ 798, 0xbfcc47401fc3bbfd
801
+ 799, 0x1515cdc8d48b2904
802
+ 800, 0xbd6eefe86284261c
803
+ 801, 0x9b1f28e3b35f22ee
804
+ 802, 0x842a29d35e5aecda
805
+ 803, 0xf2346109ad370765
806
+ 804, 0x24d68add5a71afd9
807
+ 805, 0x4a691421613d91e2
808
+ 806, 0x60e3058b3c244051
809
+ 807, 0x79194905cdaa5de8
810
+ 808, 0xe0e2df35c01e8987
811
+ 809, 0xe29b78beffbb5e4a
812
+ 810, 0xcdcdbc020218c19e
813
+ 811, 0x5ae0af8c16feae43
814
+ 812, 0x8109292feeaf14fa
815
+ 813, 0x34113f7508dfa521
816
+ 814, 0xc062ac163f56730a
817
+ 815, 0xf1660e66ec6d4c4c
818
+ 816, 0x5966c55f60151c80
819
+ 817, 0x3865ae8ec934b17
820
+ 818, 0x472a7314afb055ec
821
+ 819, 0x7a24277309a44a44
822
+ 820, 0x556e02dd35d38baa
823
+ 821, 0x9849611a1bc96ec1
824
+ 822, 0xd176f5d5a8eb0843
825
+ 823, 0x44db12ec60510030
826
+ 824, 0x272e3a06a0030078
827
+ 825, 0x7c4764dbefc075ea
828
+ 826, 0x910712f3735c1183
829
+ 827, 0xd49a2da74ae7aff6
830
+ 828, 0xcf9b3e6e8f776d71
831
+ 829, 0x27789fe3ec481a02
832
+ 830, 0x86659f82c6b5912b
833
+ 831, 0xe044b3dbf339158c
834
+ 832, 0x99d81f6bb62a37b0
835
+ 833, 0x5f5830c246fada9a
836
+ 834, 0xe68abab1eeb432cb
837
+ 835, 0x49c5c5ace04e104
838
+ 836, 0x1ac3871b3fc6771b
839
+ 837, 0x773b39f32d070652
840
+ 838, 0x9c4138c2ae58b1f3
841
+ 839, 0xac41c63d7452ac60
842
+ 840, 0x9248826b245359e1
843
+ 841, 0x99bba1c7a64f1670
844
+ 842, 0xe0dc99ff4ebb92f2
845
+ 843, 0x113638652740f87c
846
+ 844, 0xebf51e94da88cfc
847
+ 845, 0x5441c344b81b2585
848
+ 846, 0xe1e69e0bc2de652a
849
+ 847, 0xe9ab6d64ae42ed1e
850
+ 848, 0x879af8730e305f31
851
+ 849, 0x36b9ad912c7e00d6
852
+ 850, 0x83ef5e9fca853886
853
+ 851, 0xda54d48bb20ea974
854
+ 852, 0x32c6d93aefa92aa2
855
+ 853, 0x4e887b2c3391847d
856
+ 854, 0x50966e815f42b1b8
857
+ 855, 0x53411ac087832837
858
+ 856, 0x46f64fef79df4f29
859
+ 857, 0xb34aae3924cd272c
860
+ 858, 0xf5ad455869a0adbe
861
+ 859, 0x8351ded7144edac8
862
+ 860, 0xeb558af089677494
863
+ 861, 0x36ed71d69293a8d6
864
+ 862, 0x659f90bf5431b254
865
+ 863, 0x53349102b7519949
866
+ 864, 0x3db83e20b1713610
867
+ 865, 0x6d63f96090556254
868
+ 866, 0x4cc0467e8f45c645
869
+ 867, 0xb8840c4bd5cd4091
870
+ 868, 0xbd381463cc93d584
871
+ 869, 0x203410d878c2066d
872
+ 870, 0x2ebea06213cf71c8
873
+ 871, 0x598e8fb75e3fceb4
874
+ 872, 0xdcca41ceba0fce02
875
+ 873, 0x61bf69212b56aae5
876
+ 874, 0x97eed7f70c9114fa
877
+ 875, 0xf46f37a8b7a063f9
878
+ 876, 0x66c8f4ffe5bd6efa
879
+ 877, 0xe43fd6efda2d4e32
880
+ 878, 0x12d6c799e5ad01de
881
+ 879, 0x9ac83e7f8b709360
882
+ 880, 0xbbb7bb3c1957513d
883
+ 881, 0x7f87c08d4b3796b0
884
+ 882, 0x9a7d1d74b6aa4a5c
885
+ 883, 0xa4314530ff741b6f
886
+ 884, 0x99a80c6b6f15fca8
887
+ 885, 0xd2fec81d6d5fc3ce
888
+ 886, 0x15a98be1cc40cea
889
+ 887, 0x98693eb7719366f3
890
+ 888, 0x36ccdc2a9e9d4de8
891
+ 889, 0x3c8208f63d77df25
892
+ 890, 0xca2e376e2343df6
893
+ 891, 0xcc9b17cbb54420c6
894
+ 892, 0x8724c44a64d7dcb8
895
+ 893, 0x9d00c6949ff33869
896
+ 894, 0xf4f8e584d2699372
897
+ 895, 0x88f4748cdd5a2d53
898
+ 896, 0xe215072a1205bc6d
899
+ 897, 0x190934fe6d740442
900
+ 898, 0x7fac5c0ab2af106d
901
+ 899, 0x1b86633a0bd84fa1
902
+ 900, 0x1293e54318492dfb
903
+ 901, 0x433324fd390f34b9
904
+ 902, 0x4c5eb2c67a44643b
905
+ 903, 0x59a6e281c388b0dd
906
+ 904, 0xe78e03f9c44623b7
907
+ 905, 0x91307a93c768fc3d
908
+ 906, 0xde8867b004d8e3ff
909
+ 907, 0xdf52c3f57b7c5862
910
+ 908, 0x993f3e1d10358a92
911
+ 909, 0x9ccb10bc3e18662d
912
+ 910, 0x45093ce48a114c73
913
+ 911, 0xd59d05979d26330a
914
+ 912, 0x417c0e03300119a9
915
+ 913, 0x1c336500f90cde81
916
+ 914, 0x1c8ccd29ead9b85b
917
+ 915, 0xb76baf3e55d4d950
918
+ 916, 0x133ad6196c75fd7e
919
+ 917, 0x34200b0cde7ed560
920
+ 918, 0x9c7c3dacb213c8d9
921
+ 919, 0xd97563c4fd9bf1b6
922
+ 920, 0x5d910e871835b6cb
923
+ 921, 0x7d46c4733a16bdf9
924
+ 922, 0xe41d73194ddc87b2
925
+ 923, 0x7d3d8a0855a465a9
926
+ 924, 0x70c2a8b5d3f90c0f
927
+ 925, 0x9e7565ca5dccfe12
928
+ 926, 0x2c0acb4577aa51b1
929
+ 927, 0x3d2cd211145b79c7
930
+ 928, 0x15a7b17aa6da7732
931
+ 929, 0xab44a3730c27d780
932
+ 930, 0xf008bd6c802bde3a
933
+ 931, 0x82ed86ddf3619f77
934
+ 932, 0xaabe982ab15c49f9
935
+ 933, 0x9bcad8fa6d8e58a4
936
+ 934, 0x8f39ed8243718aa1
937
+ 935, 0xe9489340e03e3cb6
938
+ 936, 0xc722314f5eefb8d0
939
+ 937, 0x870e8869a436df59
940
+ 938, 0x4dae75b8087a8204
941
+ 939, 0xe1d790f6ec6e425b
942
+ 940, 0xafd39ea1b1d0ed09
943
+ 941, 0xdf2c99e464ddf08f
944
+ 942, 0x74936d859ab9644d
945
+ 943, 0x3871302164250e73
946
+ 944, 0x764b68921e911886
947
+ 945, 0x2a1d024b26bb9d66
948
+ 946, 0x797fba43918e75b4
949
+ 947, 0x62ec6d24ccca335b
950
+ 948, 0xf4bd8b951762b520
951
+ 949, 0x9d450dede9119397
952
+ 950, 0x5393a26d10f8c124
953
+ 951, 0x6b74769392896b57
954
+ 952, 0x7f61dbcc0e328581
955
+ 953, 0x64e1df3884d0d94
956
+ 954, 0xba77dcdf23738c37
957
+ 955, 0xf8e288bc0a177475
958
+ 956, 0x4a8abfd1702ecb7d
959
+ 957, 0x53f22886694736a7
960
+ 958, 0x8fc982597ced3e3
961
+ 959, 0x1bc46090f820fff7
962
+ 960, 0x8bd31f965d02229f
963
+ 961, 0x65cd0cb29996ee53
964
+ 962, 0x702e0f4fcf8c2e9f
965
+ 963, 0x293b77bff307a9a0
966
+ 964, 0x125a986b8b305788
967
+ 965, 0x416b0eea428ebf3c
968
+ 966, 0xeac85421ab0e8469
969
+ 967, 0x7f5496095019aa68
970
+ 968, 0x1a96d7afbc708e0
971
+ 969, 0xb91262e6766e01e1
972
+ 970, 0xd0a549cc4ccc6954
973
+ 971, 0x75a9a073f50c8a0d
974
+ 972, 0xae275d2c1c6cd23c
975
+ 973, 0xcf159b5ec5d28fd4
976
+ 974, 0x75d0838ce9b92b
977
+ 975, 0xd4eddcee6dc4677f
978
+ 976, 0x6a0a8ad5df6b75b8
979
+ 977, 0x6f3fd0ef0f13ecc4
980
+ 978, 0xb75a5826c1a8f8a8
981
+ 979, 0xd47098bbc7943766
982
+ 980, 0x3d4ddd62d5f23dd1
983
+ 981, 0x760a904e4583841c
984
+ 982, 0x2afeb5022b4cf1f
985
+ 983, 0x66d5f653729f0a13
986
+ 984, 0x9a6a5ab62980d30f
987
+ 985, 0xc332f5643bbf8d5b
988
+ 986, 0x848fb702e4056a90
989
+ 987, 0xa057beaf3f9e8c5f
990
+ 988, 0x6cc603e4560a6c6a
991
+ 989, 0xec761811a7b23211
992
+ 990, 0xb14aa4090a82aaa5
993
+ 991, 0xe29d9d028a5b2dbb
994
+ 992, 0x5564e53738d68f97
995
+ 993, 0xfabca36542eaaf3b
996
+ 994, 0xb9912fcb782020a2
997
+ 995, 0xe865e01b349284fd
998
+ 996, 0x540b5ff11c5f9274
999
+ 997, 0x3463f64e1e7451dc
1000
+ 998, 0xe15d3e2f33b735f8
1001
+ 999, 0xf5433336eadef6e
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/sfc64-testset-2.csv ADDED
@@ -0,0 +1,1001 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ seed, 0x0
2
+ 0, 0x91959e5fb96a6332
3
+ 1, 0x3c1dd8a25a7e9f21
4
+ 2, 0x657bdffc99798d9e
5
+ 3, 0x1a04de320b19e022
6
+ 4, 0x65b92af0e5f3c61c
7
+ 5, 0x9c84070ce8f743c0
8
+ 6, 0xbb10e573693cdb25
9
+ 7, 0xd65ea9e76b37fb6b
10
+ 8, 0x503efd0e76c8ae66
11
+ 9, 0xd711dcd04c26d0f
12
+ 10, 0x12f53f435814ac8c
13
+ 11, 0xb392cd402cfc82bd
14
+ 12, 0x461764550e06c889
15
+ 13, 0x716a48b3514e6979
16
+ 14, 0xdd0a322213c18ad7
17
+ 15, 0x6673a8ca0a05c4d7
18
+ 16, 0x2992ef333437f844
19
+ 17, 0xc4aaf7e8240b2aad
20
+ 18, 0x6ab0a1af1f41474f
21
+ 19, 0xb0bae400c226941d
22
+ 20, 0xe5f80c2eeeab48c6
23
+ 21, 0x3832c6a93a4024bf
24
+ 22, 0x280bd824fabe8368
25
+ 23, 0x66b626228321e5ff
26
+ 24, 0xe0bdfba5325a307e
27
+ 25, 0x3a5f65c6ef254e05
28
+ 26, 0x99ea12503cb02f94
29
+ 27, 0x5d01fd2db77d420b
30
+ 28, 0x6959bf5f36b2368d
31
+ 29, 0xd856e30c62b5f5be
32
+ 30, 0xe33233e1d8140e66
33
+ 31, 0xb78be619d415fa8d
34
+ 32, 0x4f943bb2cc63d3b
35
+ 33, 0x9b1460b290952d81
36
+ 34, 0x19205d794826740e
37
+ 35, 0x64617bd9d7a6a1ff
38
+ 36, 0x30442124b55ea76a
39
+ 37, 0xebbbc3b29d0333fc
40
+ 38, 0x39235a0fe359751c
41
+ 39, 0xf9629768891121aa
42
+ 40, 0x32052f53f366e05a
43
+ 41, 0x60cc5b412c925bc8
44
+ 42, 0xf8b7ecda1c0e5a9
45
+ 43, 0x195f036e170a2568
46
+ 44, 0xfe06d0381a9ca782
47
+ 45, 0x919d89e8b88eebbf
48
+ 46, 0xa47fb30148cf0d43
49
+ 47, 0x5c983e99d5f9fd56
50
+ 48, 0xe7492cdb6a1d42cd
51
+ 49, 0xf9cfe5c865b0cfd8
52
+ 50, 0x35b653367bbc3b99
53
+ 51, 0xb1d92f6f4d4e440b
54
+ 52, 0x737e1d5bd87ed9c0
55
+ 53, 0x7a880ca1498f8e17
56
+ 54, 0x687dae8494f9a3f7
57
+ 55, 0x6bae1989f441d5d7
58
+ 56, 0x71ad3fa5a9195c2e
59
+ 57, 0x16b3969779f5d03
60
+ 58, 0xd1bce2ac973f15b3
61
+ 59, 0xa114b1ee2ce0dcdd
62
+ 60, 0x270d75c11eb1b8d5
63
+ 61, 0xc48ffa087c0a7bc
64
+ 62, 0xaaf9dc48cda9848d
65
+ 63, 0x8111cf10ef6e584d
66
+ 64, 0x6736df6af40ee6f4
67
+ 65, 0x1a1a111682fbf98d
68
+ 66, 0xeb217658e1cb3b5d
69
+ 67, 0xcaf58a8b79de9dec
70
+ 68, 0x25d0ffd63c88d7a1
71
+ 69, 0x4c498cd871b7f176
72
+ 70, 0x4069a6156eb0cf3c
73
+ 71, 0xdf012f12edcdd867
74
+ 72, 0x7734c0ac8edb1689
75
+ 73, 0xed6960ac53dbc245
76
+ 74, 0x305e20da8868c661
77
+ 75, 0x5f0c7a3719956f95
78
+ 76, 0x66842bbe3b28895
79
+ 77, 0xb608bc9a31eac410
80
+ 78, 0xfcb17d5529503abd
81
+ 79, 0x829ae5cbc29b92ee
82
+ 80, 0x17f2f0027bc24f3a
83
+ 81, 0x435926c33d8f44cc
84
+ 82, 0x3ab899327098dbec
85
+ 83, 0xaf78573b27f8ead8
86
+ 84, 0xa8b334fabcf8dc60
87
+ 85, 0xcdf3b366a6a303db
88
+ 86, 0x8da9379dd62b34c8
89
+ 87, 0xb0ba511955f264a7
90
+ 88, 0x9d72e21a644f961d
91
+ 89, 0xfac28382e2e7e710
92
+ 90, 0xd457065f048410aa
93
+ 91, 0x1cae57d952563969
94
+ 92, 0x5a160a6223253e03
95
+ 93, 0x2c45df736d73c8bd
96
+ 94, 0x7f651ebc6ad9cec5
97
+ 95, 0x77a6be96c7d2e7e7
98
+ 96, 0x1721fb1dbfd6546a
99
+ 97, 0xf73f433ecff3c997
100
+ 98, 0xed1e80f680965bfe
101
+ 99, 0x6705ad67a3003b30
102
+ 100, 0xac21134efcadb9f7
103
+ 101, 0x4d2ba0a91d456ac
104
+ 102, 0x59da7b59434eb52b
105
+ 103, 0x26c1d070fd414b5f
106
+ 104, 0xed7079ddfce83d9a
107
+ 105, 0x9277d21f88e0fb7a
108
+ 106, 0xfae16b9a8d53d282
109
+ 107, 0xb08a0e2e405fdf7d
110
+ 108, 0x2ea20df44229d6ec
111
+ 109, 0x80e4634cd3612825
112
+ 110, 0xbe62e8aeba8f8a1a
113
+ 111, 0x4981209769c190fb
114
+ 112, 0xcec96ef14c7e1f65
115
+ 113, 0x73fe4457b47e7b53
116
+ 114, 0x1d66300677315c31
117
+ 115, 0xe26821290498c4cc
118
+ 116, 0xf6110248fd8fb1c5
119
+ 117, 0x30fd7fe32dbd8be3
120
+ 118, 0x534ec9b910a2bd72
121
+ 119, 0x8f9bfe878bbf7382
122
+ 120, 0x4f4eb5295c0c2193
123
+ 121, 0xdeb22f03a913be9e
124
+ 122, 0x40f716f8e2a8886c
125
+ 123, 0xc65007d0e386cdb1
126
+ 124, 0x9bdd26d92b143a14
127
+ 125, 0xf644b0b77ea44625
128
+ 126, 0x75f5a53f6b01993a
129
+ 127, 0xfe803e347bf41010
130
+ 128, 0x594bff5fa17bc360
131
+ 129, 0x3551edfb450373c7
132
+ 130, 0x898f9dad433615db
133
+ 131, 0x923d2406daa26d49
134
+ 132, 0x99e07faccbc33426
135
+ 133, 0x7389f9ff4470f807
136
+ 134, 0xdc2a25957c6df90b
137
+ 135, 0x33c6d8965ef3053f
138
+ 136, 0x51a8f07e838f1ab
139
+ 137, 0x91c5db369380274f
140
+ 138, 0xc37de65ac56b207e
141
+ 139, 0xfcc6d2375dde7f14
142
+ 140, 0xa4e6418bff505958
143
+ 141, 0x4b8b9f78e46953c4
144
+ 142, 0x255ab2e0f93cf278
145
+ 143, 0xdf650717af3d96ef
146
+ 144, 0x2caa21cba3aae2b2
147
+ 145, 0xce7e46c6f393daa4
148
+ 146, 0x1d5b3573f9997ac7
149
+ 147, 0x5280c556e850847d
150
+ 148, 0x32edc31bef920ad7
151
+ 149, 0xefaa6b0b08cf2c6
152
+ 150, 0x5151c99d97b111c5
153
+ 151, 0x35ccf4bf53d17590
154
+ 152, 0xa210d7bd8697b385
155
+ 153, 0xa9419f95738fbe61
156
+ 154, 0xdeccf93a1a4fdc90
157
+ 155, 0xd0ea3365b18e7a05
158
+ 156, 0x84122df6dcd31b9a
159
+ 157, 0x33040a2125cea5f5
160
+ 158, 0xfe18306a862f6d86
161
+ 159, 0xdb97c8392e5c4457
162
+ 160, 0xc3e0fa735e80e422
163
+ 161, 0x7d106ff36467a0c1
164
+ 162, 0xb9825eecc720a76d
165
+ 163, 0x7fefc6f771647081
166
+ 164, 0xf5df3f5b3977bf13
167
+ 165, 0x18fb22736d36f1e0
168
+ 166, 0xadc4637b4953abfc
169
+ 167, 0x174e66d3e17974bd
170
+ 168, 0xf1614c51df4db5db
171
+ 169, 0x6664ecde5717b293
172
+ 170, 0xd5bc5b6839265c26
173
+ 171, 0xf6ca9ce1af3f1832
174
+ 172, 0xca696789a9d506ea
175
+ 173, 0x7399c246c8f9d53
176
+ 174, 0xadf49049626417e2
177
+ 175, 0xbcd84af37d09ab91
178
+ 176, 0xbb41c177f3a3fa45
179
+ 177, 0x592becc814d55302
180
+ 178, 0xa88b4e65f6cfe5f7
181
+ 179, 0xa0a55e34ff879426
182
+ 180, 0x3c2ea6aa725b42b7
183
+ 181, 0x65ac4a407b1f9521
184
+ 182, 0xde63d53f7e88b556
185
+ 183, 0x18bc76696d015f40
186
+ 184, 0xd1363f2cd4c116a8
187
+ 185, 0x2fe859be19a48e4a
188
+ 186, 0x83d6099b1415e656
189
+ 187, 0x43f2cbc1a4ee6410
190
+ 188, 0xb2eca3d3421c533d
191
+ 189, 0xc52b98ea3f031f5d
192
+ 190, 0xfe57eb01da07e9d1
193
+ 191, 0xf9377883537a6031
194
+ 192, 0x364030c05dac7add
195
+ 193, 0x6815cb06b35d4404
196
+ 194, 0xceae2d4ce31894be
197
+ 195, 0xc602bcdf6062bf6a
198
+ 196, 0xc8e4bd8dcc6062e3
199
+ 197, 0x9c29e87b92a1a791
200
+ 198, 0x41e626b871ca9651
201
+ 199, 0x325c3d1fb8efbcd8
202
+ 200, 0x7dbbacf8e3419fb3
203
+ 201, 0x3602e72516bb7319
204
+ 202, 0x537a008ebd94d24b
205
+ 203, 0xda7714fc9d4d161d
206
+ 204, 0x1c8c73700e1b621b
207
+ 205, 0x2749b80937d6c939
208
+ 206, 0x76ee6abac5b14d33
209
+ 207, 0xf18d1e92cb6a8b5c
210
+ 208, 0x6ce9579d9291c721
211
+ 209, 0x60523c745a40e58
212
+ 210, 0x637f837fcc901757
213
+ 211, 0x2ff71b19661dc5b3
214
+ 212, 0x393ab586326ad16f
215
+ 213, 0xa0970ea30fe742b7
216
+ 214, 0x570222d7f27fe5ae
217
+ 215, 0x3b5806d43fd38629
218
+ 216, 0x129a0ad7420180c5
219
+ 217, 0x1c4726355778d52c
220
+ 218, 0x7c1459cf77656499
221
+ 219, 0xfe038a0932132069
222
+ 220, 0x4c4cc317a937483a
223
+ 221, 0xa333d24067e926ba
224
+ 222, 0x401d9b6ab37f6ef2
225
+ 223, 0x87ad0e491ebe4a2a
226
+ 224, 0xfc02f312e72d121d
227
+ 225, 0xfde715b3b99767b2
228
+ 226, 0xd111c342ba521c92
229
+ 227, 0x83b221b10879c617
230
+ 228, 0x6a1bf5c01fdf4277
231
+ 229, 0x166bfc0c3f5892ee
232
+ 230, 0x4608d556d7c57856
233
+ 231, 0x8d786857c95ece49
234
+ 232, 0x2d357445a1aca4ac
235
+ 233, 0x79620dae28ecd796
236
+ 234, 0x90e715dc0f2201c4
237
+ 235, 0x173b68b4c9f4b665
238
+ 236, 0x4e14d040ebac4eef
239
+ 237, 0xbd25960b4b892e
240
+ 238, 0x911a199db6f1989d
241
+ 239, 0xfe822d7c601fd2e0
242
+ 240, 0x9b4c1d58d8223a69
243
+ 241, 0x907c1891283843b0
244
+ 242, 0xf4868bf54061c4b2
245
+ 243, 0x17f8cd1fc24efd85
246
+ 244, 0xd44253f9af14c3aa
247
+ 245, 0x16d0da0cb911d43c
248
+ 246, 0x3c6a46615828e79a
249
+ 247, 0x498591c1138e11a5
250
+ 248, 0xcc0f26336d0d6141
251
+ 249, 0x4d3ebc873212309a
252
+ 250, 0x16bad7792d5c2c6a
253
+ 251, 0x474215a80b2bbd11
254
+ 252, 0x7159848abd8492fc
255
+ 253, 0x359341c50973685f
256
+ 254, 0x27512ee7bf784a4a
257
+ 255, 0x45228ea080f70447
258
+ 256, 0x880cab616500d50e
259
+ 257, 0x12fae93f9830d56e
260
+ 258, 0x6744ee64348d9acd
261
+ 259, 0x484dada28cd2a828
262
+ 260, 0x98491d0729e41863
263
+ 261, 0x2f15aac43c2863b0
264
+ 262, 0x5727a34d77a1da0f
265
+ 263, 0xa435cebef6a62eed
266
+ 264, 0xd211697d57b053b0
267
+ 265, 0x65aa757b68bd557
268
+ 266, 0xe3a1b7a2d8a3e06a
269
+ 267, 0x2adf64e67252a7a9
270
+ 268, 0xadadcb75cadee276
271
+ 269, 0x7934bc57ac8d97bf
272
+ 270, 0xccff0d0f412e0606
273
+ 271, 0x101a82aa3e8f3db9
274
+ 272, 0xb0f2498094b4575c
275
+ 273, 0xba2561d9ef26ed8a
276
+ 274, 0xfbcd1268fc3febe1
277
+ 275, 0x9aa10bb19eb152e0
278
+ 276, 0xf496217a601a6d72
279
+ 277, 0xe4be1e4f2fa91363
280
+ 278, 0x473a602bf3dd68eb
281
+ 279, 0xfe8ed2a48c26f4b5
282
+ 280, 0x20e94b1a00159476
283
+ 281, 0x93e1cb1c6af86ec7
284
+ 282, 0x4fcba3898f7442ba
285
+ 283, 0x5150c3a3d94891df
286
+ 284, 0x91cfce6c85b033ea
287
+ 285, 0x625e8a832a806491
288
+ 286, 0x28c97ba72e3ec0b2
289
+ 287, 0x8e172de217c71ea1
290
+ 288, 0x926b80216c732639
291
+ 289, 0x28b19431a649ae3d
292
+ 290, 0x57c039a6e95a3795
293
+ 291, 0xfbc354182fe52718
294
+ 292, 0x819dfd7c7d534cef
295
+ 293, 0xabb4093a619ed44f
296
+ 294, 0xe785b7ac6f656745
297
+ 295, 0xb647b4588b2f942f
298
+ 296, 0x64cf870a14c72d27
299
+ 297, 0x6d4a4a2a0ba9b37e
300
+ 298, 0x78bfb0427d7ce6b0
301
+ 299, 0x8dcc72b8bfc79ac6
302
+ 300, 0x1c14d915d5e76c99
303
+ 301, 0xaf48ddea6f096d79
304
+ 302, 0x51b39b67aa130d8
305
+ 303, 0x1aeeb39d4def06de
306
+ 304, 0xd678092ffedfdd27
307
+ 305, 0x8f54787f325111d3
308
+ 306, 0xf2ca2e827beaa6bc
309
+ 307, 0x339d134099e98545
310
+ 308, 0x1f6a8a7b33942e43
311
+ 309, 0x952c8065dbef669a
312
+ 310, 0xe066aeb6690147f7
313
+ 311, 0xed25aa92cf58ebb6
314
+ 312, 0x7601edce215ef521
315
+ 313, 0xed1c5b396abd9434
316
+ 314, 0x4fd1e407535de9d5
317
+ 315, 0xccc8315a0d4d1441
318
+ 316, 0x85753e250bb86976
319
+ 317, 0xf232e469378761c3
320
+ 318, 0x81d691b8e9aef3c6
321
+ 319, 0x224a2f9cab0ad0e
322
+ 320, 0x978f3d3e50007f4e
323
+ 321, 0xd3713e6a6c0cbe60
324
+ 322, 0xcce8f1eadd41f80d
325
+ 323, 0x34bda028a97d469
326
+ 324, 0x90e242fdf0f59183
327
+ 325, 0x4d749754fbc5f092
328
+ 326, 0x4399f5b7851cc87b
329
+ 327, 0xcb921a5f25f6c5d7
330
+ 328, 0x120bf5d0162101
331
+ 329, 0x1304cc2aa352735a
332
+ 330, 0xf7236c5d0d5d417b
333
+ 331, 0xc31b320fc1654306
334
+ 332, 0xb468c6b23f3fb4e7
335
+ 333, 0xb5985b5bfaca4166
336
+ 334, 0x898285a1cd2f8375
337
+ 335, 0xa13493da372aa7c9
338
+ 336, 0x15c80c09c12634e7
339
+ 337, 0x9b765c5cc9d438bd
340
+ 338, 0xee7da816a9201dcb
341
+ 339, 0x92e269f73b5a248e
342
+ 340, 0xa8086c5de81400ce
343
+ 341, 0xe0053901853d42be
344
+ 342, 0x821df32c012f433e
345
+ 343, 0x17a6d69ca37387c7
346
+ 344, 0x2b10044bfba3501f
347
+ 345, 0x8dfd262afc2e8515
348
+ 346, 0xd68c2c7b60226371
349
+ 347, 0xe81ac114e4416774
350
+ 348, 0x5896d60061ebc471
351
+ 349, 0xa996e3147811dbd1
352
+ 350, 0xa819c7b80ecb3661
353
+ 351, 0x982ad71b38afbc01
354
+ 352, 0xab152b65aa17b7fe
355
+ 353, 0x4582bc282ef187ef
356
+ 354, 0xab5a17fe8d9bc669
357
+ 355, 0x83664fa9cb0284b7
358
+ 356, 0x234c4b0091968f52
359
+ 357, 0x8ab5f51805688d37
360
+ 358, 0xe9e11186e0c53eda
361
+ 359, 0x10df37ef1de2eccf
362
+ 360, 0x780f1b0d52db968f
363
+ 361, 0x50bd4ff292872cd5
364
+ 362, 0x51e681c265f5ad0
365
+ 363, 0x842c49660a527566
366
+ 364, 0x6e56ee026e9eda87
367
+ 365, 0x4cf39e40d8c80393
368
+ 366, 0x13e466df371f7e1f
369
+ 367, 0xf2ce1799f38e028e
370
+ 368, 0x833c8db7adc6ff0e
371
+ 369, 0xc6e189abc2ec98f
372
+ 370, 0xafebb3721283fec5
373
+ 371, 0xb49bc1eb5cc17bdc
374
+ 372, 0xf1d02e818f5e4488
375
+ 373, 0xe5e9d5b41a1dd815
376
+ 374, 0xce8aca6573b1bfe5
377
+ 375, 0x9b0a5d70e268b1d5
378
+ 376, 0xf3c0503a8358f4de
379
+ 377, 0x2681605dd755669d
380
+ 378, 0xea265ca7601efc70
381
+ 379, 0xa93747f0a159439f
382
+ 380, 0x62a86ede78a23e50
383
+ 381, 0xac8a18935c3d063c
384
+ 382, 0x729c0a298f5059f5
385
+ 383, 0xbbf195e5b54399f4
386
+ 384, 0x38aa9d551f968900
387
+ 385, 0x3b3e700c58778caa
388
+ 386, 0x68e6e33c4443957a
389
+ 387, 0x7c56fc13eb269815
390
+ 388, 0xaf7daca39711804a
391
+ 389, 0x50fde6d10f9544b3
392
+ 390, 0xf3d37159f6f6c03d
393
+ 391, 0x82d298f5c1a71685
394
+ 392, 0x478661ac54c5002c
395
+ 393, 0x6053768e1a324ae0
396
+ 394, 0xde8fb4a7e56707ea
397
+ 395, 0xaa2809301faa8cf4
398
+ 396, 0x690a8d49fedd0722
399
+ 397, 0xe17c481b9c217de9
400
+ 398, 0x60d1d8a2b57288e3
401
+ 399, 0x149adfaadc6b0886
402
+ 400, 0xa3c18b6eb79cd5fa
403
+ 401, 0x5774e3a091af5f58
404
+ 402, 0x2acca57ff30e5712
405
+ 403, 0x94454d67367c4b0c
406
+ 404, 0x581b2985ac2df5ca
407
+ 405, 0x71618e50744f3e70
408
+ 406, 0x270a7f3bd9a94ae6
409
+ 407, 0x3ef81af9bb36cd7b
410
+ 408, 0x8a4a2592875254aa
411
+ 409, 0x704ac6086fbb414a
412
+ 410, 0xda774d5d3f57414d
413
+ 411, 0xe20d3358b918ae9e
414
+ 412, 0x934a6b9f7b91e247
415
+ 413, 0xf91649cde87ec42c
416
+ 414, 0x248cec5f9b6ced30
417
+ 415, 0x56791809fd8d64ba
418
+ 416, 0xf502b2765c1395f
419
+ 417, 0x6b04ec973d75aa7f
420
+ 418, 0xb0339f2794bb26f
421
+ 419, 0x4c524636efbaea49
422
+ 420, 0x6bbf3876e9738748
423
+ 421, 0xf686524e754e9e24
424
+ 422, 0x8dafa05a42d19cd3
425
+ 423, 0xc5f069ab2434008e
426
+ 424, 0x4fd64cc713cba76
427
+ 425, 0xdbf93450c881ed5f
428
+ 426, 0x492e278ebabb59a2
429
+ 427, 0x993fddfde4542642
430
+ 428, 0xecde68a72c8d4e52
431
+ 429, 0xe0760b3074c311fd
432
+ 430, 0x68dc0e7e06528707
433
+ 431, 0x52b50edf49c0fdc7
434
+ 432, 0xb2bd4185c138f412
435
+ 433, 0x431496d7e1d86f3
436
+ 434, 0xa4e605b037e26c44
437
+ 435, 0x58236ae1f0aca2b5
438
+ 436, 0x26c72c420fc314d8
439
+ 437, 0x20134e982ab99a2b
440
+ 438, 0x544b59b8b211374b
441
+ 439, 0x1301c42f3a14d993
442
+ 440, 0x52a6ea740f763b0f
443
+ 441, 0xf209d70c2bebf119
444
+ 442, 0xac66a4ebc2aa1be
445
+ 443, 0x683713ed35878788
446
+ 444, 0x2b5578acec06b80c
447
+ 445, 0x86428efa11c45b36
448
+ 446, 0xb49010adb17d291e
449
+ 447, 0x73b686bd8664b6be
450
+ 448, 0x6d28ebf57b6884cc
451
+ 449, 0x9712091230ff58d9
452
+ 450, 0xc9c91f74c38b286
453
+ 451, 0x776310ac41dc008e
454
+ 452, 0x2f3739df0bf6a88e
455
+ 453, 0x5792dc62b94db675
456
+ 454, 0x5715910d024b06af
457
+ 455, 0xeb1dd745458da08
458
+ 456, 0xfce7b07ccfa851a7
459
+ 457, 0xc305f1e983ac368
460
+ 458, 0x485aa9519ac00bb0
461
+ 459, 0xa5354f6589fb0ea0
462
+ 460, 0x32fee02dfdbf4454
463
+ 461, 0x4d1ddc304bbefaaa
464
+ 462, 0x789a270a1737e57e
465
+ 463, 0x9f3072f4b1ed8156
466
+ 464, 0x4de3c00e89058120
467
+ 465, 0xb00a02529e0a86fa
468
+ 466, 0x539f6f0edd845d9a
469
+ 467, 0x85e578fe15a8c001
470
+ 468, 0xa12c8e1a72cce7d8
471
+ 469, 0xc6908abbc2b1828
472
+ 470, 0xcf70090774cbb38c
473
+ 471, 0x3b636a6977b45d4a
474
+ 472, 0xf0a731b220680b57
475
+ 473, 0x18973929f51443a8
476
+ 474, 0xe93e1fbe7eadabe
477
+ 475, 0x8233730f0a6dfa02
478
+ 476, 0x66e50b6919b0ab74
479
+ 477, 0xb1aba87c97fd08a2
480
+ 478, 0xd4dffc1fbc117ad6
481
+ 479, 0x6f7fa65724b96e6a
482
+ 480, 0x4bd5800dee92e0fa
483
+ 481, 0xe18a959db6256da
484
+ 482, 0xe53a291bc66df487
485
+ 483, 0xb7ec306a08651806
486
+ 484, 0x1847a6b80d2821e1
487
+ 485, 0xda50391283b14d39
488
+ 486, 0xacc4d3cd7cceb97a
489
+ 487, 0x57f70185165b7bc6
490
+ 488, 0x302b6d597c3aaba7
491
+ 489, 0xa47f32d037eab51e
492
+ 490, 0xe1509b4408abc559
493
+ 491, 0x4f30a1d7c2934157
494
+ 492, 0x2ad03e6c60b650b2
495
+ 493, 0x334d9c337b0a9064
496
+ 494, 0xc7f442821e7aac12
497
+ 495, 0xbcdeb09298694cdd
498
+ 496, 0xe42402389f8f0fb4
499
+ 497, 0xe5de56af539df727
500
+ 498, 0x7017f9b2101ee240
501
+ 499, 0x1ee5e68d5b10001d
502
+ 500, 0x436229051836387a
503
+ 501, 0xcd532d6d6ec38fb7
504
+ 502, 0x30a66606fdf38272
505
+ 503, 0xfdaa2ab9cf798496
506
+ 504, 0x4277b4adec70e7df
507
+ 505, 0x72cfc30256e0eaef
508
+ 506, 0x3c3359fd9bd34917
509
+ 507, 0xb7aa89598856efb0
510
+ 508, 0xf72226f8bf299ef5
511
+ 509, 0x258c499275a4356f
512
+ 510, 0x999a56bfc7f20d76
513
+ 511, 0x2b3e7432e20c18b
514
+ 512, 0x2d1251332f760cb5
515
+ 513, 0x7420e0eea62157c5
516
+ 514, 0xe85c895aa27cec3d
517
+ 515, 0x27a0545c7020d57c
518
+ 516, 0xc68638a65b4fff0d
519
+ 517, 0xfda473983a4ea747
520
+ 518, 0xd19fe65fb4c06062
521
+ 519, 0x6b1374e050ee15e4
522
+ 520, 0x80065ecd49bc4bef
523
+ 521, 0x4ee655954bc838de
524
+ 522, 0xe8fb777504a72299
525
+ 523, 0x86b652ea70f4bdde
526
+ 524, 0xcdc9e0fbde7e4f33
527
+ 525, 0x352c0a50cd3ac56
528
+ 526, 0x4b8605d368be75dc
529
+ 527, 0x1ac9ea8129efbc37
530
+ 528, 0x470325faa99f39c5
531
+ 529, 0x25dd7ef9adccf7a1
532
+ 530, 0x5ae2c7a03e965816
533
+ 531, 0xf733d2df59dacc7d
534
+ 532, 0xa05bbf0a8a1a7a70
535
+ 533, 0xe8aa3f102846ef5f
536
+ 534, 0xc9b85ec49ae71789
537
+ 535, 0xb904c14ed1cb1936
538
+ 536, 0x5ae618230b5f0444
539
+ 537, 0x97987fe47b5d7467
540
+ 538, 0xabb3aca8865ca761
541
+ 539, 0x38bfdf29d4508228
542
+ 540, 0x353654f408353330
543
+ 541, 0xeb7e92930ae4ef0d
544
+ 542, 0xec50f1a7ca526b96
545
+ 543, 0xd5e2dc08b5697544
546
+ 544, 0x24c7fd69d5ec32df
547
+ 545, 0x6f7e1095568b8620
548
+ 546, 0x6ed9c16ca13b3c8
549
+ 547, 0xe676ef460002130f
550
+ 548, 0xa3a01a3992c4b430
551
+ 549, 0xe2130406c3b1f202
552
+ 550, 0xa8f7263e2aedcd20
553
+ 551, 0xc45d71ef2e35f507
554
+ 552, 0x37155594021da7ba
555
+ 553, 0x22dc94f19de73159
556
+ 554, 0x7969fc6bffc5443f
557
+ 555, 0x97def7e44faa6bfe
558
+ 556, 0x8b940f5e8931d71f
559
+ 557, 0xd95b1dd3f1a3fdd5
560
+ 558, 0x1c83bfdca615701a
561
+ 559, 0xb7fcb56279ceca6b
562
+ 560, 0xd84f8950f20dcd0
563
+ 561, 0xb03343698de3cbe0
564
+ 562, 0xf64565d448d71f71
565
+ 563, 0xda52b4676e0ae662
566
+ 564, 0xda39c2c05b4ffb91
567
+ 565, 0xb35e2560421f6a85
568
+ 566, 0x1a7b108d48ac3646
569
+ 567, 0xc4e264dc390d79ed
570
+ 568, 0xa10727dfd9813256
571
+ 569, 0x40d23154e720e4f7
572
+ 570, 0xd9fa7cd7e313e119
573
+ 571, 0xcbf29107859e6013
574
+ 572, 0xc357338553d940b7
575
+ 573, 0x2641b7ab0bdfcbaa
576
+ 574, 0xd12f2b6060533ae7
577
+ 575, 0xd0435aa626411c56
578
+ 576, 0x44af4a488a9cec72
579
+ 577, 0xb934232ea8fa5696
580
+ 578, 0x760a8b12072b572d
581
+ 579, 0xfab18f9942cfa9b3
582
+ 580, 0x5676834c1fe84d16
583
+ 581, 0x9c54e4fddb353236
584
+ 582, 0xab49edfc9551f293
585
+ 583, 0x567f1fb45a871d
586
+ 584, 0x32a967c873998834
587
+ 585, 0x99240aad380ef8d1
588
+ 586, 0x7f66cbd432859a64
589
+ 587, 0x4cdc8a4658166822
590
+ 588, 0x984e3984a5766492
591
+ 589, 0xa3b2d0a3d64d3d94
592
+ 590, 0x177f667172f2affc
593
+ 591, 0xb1a90607a73a303f
594
+ 592, 0xe600b6c36427f878
595
+ 593, 0xf758f9834cb7f466
596
+ 594, 0x8ee9fce4a3f36449
597
+ 595, 0xcb8f11533e7da347
598
+ 596, 0xe7cf647794dabd7c
599
+ 597, 0xc9d92cfe6110806
600
+ 598, 0xea1335fa9145a1ec
601
+ 599, 0xbc6c29821d094552
602
+ 600, 0x37b9d6a858cc8bc3
603
+ 601, 0xf24e4c694929893e
604
+ 602, 0x55d025ce2d7d0004
605
+ 603, 0xccdc69acccf4267b
606
+ 604, 0xc491c04340c222eb
607
+ 605, 0xba50f75ecec9befb
608
+ 606, 0x1ec7bd85b8fe3bb9
609
+ 607, 0xe4de66498c59ae8a
610
+ 608, 0x38aa9e912712c889
611
+ 609, 0xcee0e43c5cc31566
612
+ 610, 0x72b69aa708fc7ed
613
+ 611, 0xdff70b7f6fa96679
614
+ 612, 0xd6d71d82112aadc3
615
+ 613, 0x365177892cb78531
616
+ 614, 0xa54852b39de4f72c
617
+ 615, 0x11dd5832bf16dd59
618
+ 616, 0x248a0f3369c97097
619
+ 617, 0xa14cec0260e26792
620
+ 618, 0x3517616ff142bed1
621
+ 619, 0x9b693ad39dab7636
622
+ 620, 0x739dff825e994434
623
+ 621, 0x67711e7356098c9
624
+ 622, 0xa81f8515d2fdf458
625
+ 623, 0xdac2908113fe568e
626
+ 624, 0xe99944ebc6e2806a
627
+ 625, 0x671728ca5b030975
628
+ 626, 0xfdad20edb2b4a789
629
+ 627, 0xedc6e466bd0369d2
630
+ 628, 0x88b5d469821f7e1b
631
+ 629, 0x2eabf94049a522a5
632
+ 630, 0x247794b7a2f5a8e3
633
+ 631, 0x278942bdbe02c649
634
+ 632, 0xbe5a9a9196ab99c1
635
+ 633, 0x75955060866da1b5
636
+ 634, 0xdedcfa149273c0b5
637
+ 635, 0xdbeb7a57758f3867
638
+ 636, 0x7b9053347a2c8d5a
639
+ 637, 0xa059b3f2eed338a5
640
+ 638, 0x59401a46ded3b79f
641
+ 639, 0x38044ba56a6d19fb
642
+ 640, 0x72c7221b4e77e779
643
+ 641, 0x526df3491a3a34da
644
+ 642, 0xc3b31184ba16c0c2
645
+ 643, 0xd94c7144488624af
646
+ 644, 0xcf966ee4dc373f91
647
+ 645, 0x62049e65dd416266
648
+ 646, 0x7c2adccb925bf8f
649
+ 647, 0xd5fa5c22ed4ef8e1
650
+ 648, 0xd00134ebd11f2cd1
651
+ 649, 0xfbdf81767bed3634
652
+ 650, 0x62e8cc8ff66b6e26
653
+ 651, 0x3a72d6bcd4f2dcf7
654
+ 652, 0xf1cd45b1b46a86ed
655
+ 653, 0x1271f98e0938bb9a
656
+ 654, 0x82e6927e83dc31fa
657
+ 655, 0x7b9b0e0acb67b92d
658
+ 656, 0x6df503e397b2e701
659
+ 657, 0x93888f6fb561e0c3
660
+ 658, 0x393fb6069a40291
661
+ 659, 0x967a7d894cc0754d
662
+ 660, 0x6e298996ad866333
663
+ 661, 0x5ff3cf5559d6ab46
664
+ 662, 0xd0d70508c40349f5
665
+ 663, 0xc64c66c0dd426b33
666
+ 664, 0x8fea340ee35c64dd
667
+ 665, 0xf9cd381eb3060005
668
+ 666, 0xfcc37c2799fc0b11
669
+ 667, 0x6a37c91d65b489fa
670
+ 668, 0x57231000fa0a0c9d
671
+ 669, 0x55f6e292c6703f9a
672
+ 670, 0xd0508ffbfa55a7a6
673
+ 671, 0x885db543276bdac8
674
+ 672, 0xc26dbe6a26b0e704
675
+ 673, 0x21f884874ebd709e
676
+ 674, 0x711f0b6c8f732220
677
+ 675, 0x354d0a361eaee195
678
+ 676, 0x721344d8d30b006a
679
+ 677, 0xa0e090a0d3a56f07
680
+ 678, 0x16b3d5d823a4952b
681
+ 679, 0x59d7874bc9eae7b6
682
+ 680, 0x9bbb32710076455f
683
+ 681, 0xd4fb22242ffabafd
684
+ 682, 0xe1d4ac6770be1d89
685
+ 683, 0xb259cedebc73dc8a
686
+ 684, 0x35faaa3b4246ab69
687
+ 685, 0x5d26addefdaee89
688
+ 686, 0x8e7ec350da0f3545
689
+ 687, 0xd0f316eed9f8fc79
690
+ 688, 0x98b2a52c9bf291b2
691
+ 689, 0xe4d294a8aca6a314
692
+ 690, 0x25bd554e6aa7673c
693
+ 691, 0xcfde5dcba5be2a6c
694
+ 692, 0xb5e01fb48d2d2107
695
+ 693, 0xe1caf28948028536
696
+ 694, 0xd434aa0a26f3ee9b
697
+ 695, 0xd17723381641b8f6
698
+ 696, 0xfe73bd1f3f3768a2
699
+ 697, 0x1cc6b1abd08d67e9
700
+ 698, 0x247e328371a28de0
701
+ 699, 0x502e7942e5a9104a
702
+ 700, 0x6a030fd242eb4502
703
+ 701, 0xa2ffe02744014ce8
704
+ 702, 0x59290763b18fe04e
705
+ 703, 0xcf14241564271436
706
+ 704, 0xb0fb73c3c1503aff
707
+ 705, 0x94e27c622f82137a
708
+ 706, 0x747a5b406ac3e1f0
709
+ 707, 0x9a914e96a732031d
710
+ 708, 0x59f68c6c8f078835
711
+ 709, 0x809d012c73eb4724
712
+ 710, 0x5b3c3b73e1b37d74
713
+ 711, 0xdde60ef3ba49cdf7
714
+ 712, 0x87a14e1f9c761986
715
+ 713, 0x4109b960604522af
716
+ 714, 0x122d0e1ed0eb6bb9
717
+ 715, 0xadc0d29e80bfe33
718
+ 716, 0xa25b1b44f5fc8e4e
719
+ 717, 0xbab85d8a9b793f20
720
+ 718, 0x825f4cbced0e7d1e
721
+ 719, 0x2d6ae8807acb37ea
722
+ 720, 0x8234420adce2e39
723
+ 721, 0x4a8ad4da6b804807
724
+ 722, 0x1e19f9bc215e5245
725
+ 723, 0x1d6f4848a916dd5e
726
+ 724, 0x9ac40dfcdc2d39cc
727
+ 725, 0x9f3524e3086155ec
728
+ 726, 0x861fffc43124b2ef
729
+ 727, 0xe640e3b756396372
730
+ 728, 0x41cb0f0c5e149669
731
+ 729, 0xe0bd37e1192e4205
732
+ 730, 0x62917d3858f4ce47
733
+ 731, 0xa36e7eb4d855820a
734
+ 732, 0x204b90255a3bf724
735
+ 733, 0x66ee83a0175535bc
736
+ 734, 0x2c14ce7c6b0c1423
737
+ 735, 0x85d9495fa514f70d
738
+ 736, 0x5a4fe45ead874dbc
739
+ 737, 0xe72248dcb8cfc863
740
+ 738, 0xfc21ff2932ed98cd
741
+ 739, 0xcbba1edd735b5cad
742
+ 740, 0x91ddc32809679bf5
743
+ 741, 0x192cdf2c7631ea1f
744
+ 742, 0xbbc451ddf2ea286f
745
+ 743, 0xad9e80cae2397a64
746
+ 744, 0x6918f0119b95d0e5
747
+ 745, 0xa40379017a27d70a
748
+ 746, 0x1aaeddb600e61e1
749
+ 747, 0x15afd93cbd7adda9
750
+ 748, 0x156719bc2b757ff4
751
+ 749, 0x13d9a59e2b2df49d
752
+ 750, 0x9a490986eaddf0a
753
+ 751, 0xef9a350f0b3eb6b4
754
+ 752, 0x5de7f6295ba4fa4d
755
+ 753, 0x7f37fd087c3fdb49
756
+ 754, 0xa9fe3749d6f3f209
757
+ 755, 0x50912ac036d9bfb
758
+ 756, 0x982cb4d726a441f8
759
+ 757, 0x8ca8d8af59b872d0
760
+ 758, 0x7f8adfb0ceeade8a
761
+ 759, 0xdad390ec742be44
762
+ 760, 0xa637944d0045be5b
763
+ 761, 0x3569a3b3af807061
764
+ 762, 0x9599da8eae14511d
765
+ 763, 0xc333e8d19589b01a
766
+ 764, 0xfb9b524a20b571e1
767
+ 765, 0xbd9dc8b37ce5c3e1
768
+ 766, 0x142333005fa389ac
769
+ 767, 0x1368bc37cd5bcce1
770
+ 768, 0x16094907ad6ecf73
771
+ 769, 0xb32c90dbba4c1130
772
+ 770, 0x82761d97c1747dd0
773
+ 771, 0x599f9f267ae3444d
774
+ 772, 0x79ad3382994852e1
775
+ 773, 0x2511f06d9ef06e54
776
+ 774, 0xb35e6ab7d5bbddae
777
+ 775, 0xfca9fa83a2988732
778
+ 776, 0x7d4350f0394ac3ba
779
+ 777, 0xa52a9527bb176ea3
780
+ 778, 0xb49fa0ceb2aa8353
781
+ 779, 0x1f62e504d1468cc0
782
+ 780, 0xe1a77bfccce6efc3
783
+ 781, 0x776cdff4dc0d6797
784
+ 782, 0x56612e39b652c1f2
785
+ 783, 0x5f096a29294eda04
786
+ 784, 0x7978abc3aabd8b23
787
+ 785, 0x79dd875e0485b979
788
+ 786, 0x8a98aa4d5735d778
789
+ 787, 0xcca43940f69d2388
790
+ 788, 0xb2d4b156f144f93a
791
+ 789, 0xbd528a676e9a862
792
+ 790, 0x2a394939c8e7ec5e
793
+ 791, 0xb1da900c6efe4abc
794
+ 792, 0x9869af479de4c034
795
+ 793, 0x78dbdfb88ac7c1db
796
+ 794, 0x18cb169143088041
797
+ 795, 0xe69e5461c51a3e13
798
+ 796, 0x5389fa16ea98183c
799
+ 797, 0xed7c80d1be1ea520
800
+ 798, 0x87246fc359758ced
801
+ 799, 0xab323eba95fae4ed
802
+ 800, 0xbc4c0dde7f8a1828
803
+ 801, 0xdb739f7955610b1a
804
+ 802, 0xecd8c68c3434cc
805
+ 803, 0x138c2eb88c477f44
806
+ 804, 0x28a65f96727aae41
807
+ 805, 0xdee879f2cf5629d
808
+ 806, 0x684f0c90ef20070f
809
+ 807, 0xa24a819ef5621800
810
+ 808, 0x8d0054f870e4fdcb
811
+ 809, 0x99e8c6e695b600b
812
+ 810, 0x50b705245891f7c3
813
+ 811, 0xc02eed3a6e58e51a
814
+ 812, 0x443d64e95443606c
815
+ 813, 0xca24959cfbd2d120
816
+ 814, 0xe072609ea48815bc
817
+ 815, 0xbcc715026590315b
818
+ 816, 0x3e76df24d7aa5938
819
+ 817, 0xd8ff04940d9b79ae
820
+ 818, 0x54474ce790059bcd
821
+ 819, 0x278390dd6aa70e81
822
+ 820, 0xf4df619fe35414e4
823
+ 821, 0x757d71270264e615
824
+ 822, 0x1e8a373699c11b23
825
+ 823, 0xef68c82046e67dd6
826
+ 824, 0xe280006599972620
827
+ 825, 0x234e095183b0f4d6
828
+ 826, 0xe3b7560ed9839749
829
+ 827, 0xcd5ec4086572332e
830
+ 828, 0xc41c0d4aaa279108
831
+ 829, 0x4b9cd6126bc16a6d
832
+ 830, 0x4a7252734f3e3dd0
833
+ 831, 0xb3132df156cc103a
834
+ 832, 0xf9e4abbf7b64464a
835
+ 833, 0xf936df27fb3c47b7
836
+ 834, 0x9142960873f6d71a
837
+ 835, 0x4ba6aa3235cdb10d
838
+ 836, 0x3237a2e765ba7766
839
+ 837, 0xd62f0b94c8e99e54
840
+ 838, 0x26b682f90a3ae41b
841
+ 839, 0x40ad5e82072b6f81
842
+ 840, 0xd0198101f5484000
843
+ 841, 0xe4fac60ba11c332
844
+ 842, 0x472d0b0a95ef9d38
845
+ 843, 0x8512557aec5a3d8f
846
+ 844, 0xef83169d3efd4de9
847
+ 845, 0x53fe89283e7a7676
848
+ 846, 0x2f50933053d69fc4
849
+ 847, 0x76f5e4362e2e53a2
850
+ 848, 0x8676fdccce28874a
851
+ 849, 0x2737764c1fb1f821
852
+ 850, 0x4a6f70afc066ab55
853
+ 851, 0x27f8e151e310fca4
854
+ 852, 0xd606960ccbe85161
855
+ 853, 0xcce51d7ddd270a32
856
+ 854, 0xb4235999794875c2
857
+ 855, 0x580084e358e884
858
+ 856, 0x2159d5e6dc8586d7
859
+ 857, 0x87bd54d8599b3ba4
860
+ 858, 0x3e9ade6a2181664
861
+ 859, 0x5e6e140406d97623
862
+ 860, 0x511545d5aa0080a2
863
+ 861, 0xf49d78ed219aac57
864
+ 862, 0xbece1f9c90b8ea87
865
+ 863, 0x1c741cac36a2c514
866
+ 864, 0x7453c141047db967
867
+ 865, 0xd751832a5037eba2
868
+ 866, 0x71370a3f30ada1f7
869
+ 867, 0x7c01cf2dcb408631
870
+ 868, 0x1052a4fbdccc0fa1
871
+ 869, 0x13d525c9df3fb6c
872
+ 870, 0xa3aa8dbfee760c55
873
+ 871, 0xc0288d200f5155cf
874
+ 872, 0x79f4bcd12af567c3
875
+ 873, 0x8160d163bb548755
876
+ 874, 0x5cf2995fb69fd2df
877
+ 875, 0xcc98ed01396639df
878
+ 876, 0xad95f1d9cfc8256e
879
+ 877, 0xa3df27d9fbdbfb9d
880
+ 878, 0x83e5f5dda4d52929
881
+ 879, 0x9adc05043009f55b
882
+ 880, 0xdfe8329dfde1c001
883
+ 881, 0x9980ccdd5298e6a2
884
+ 882, 0x636a7bd134f6ef56
885
+ 883, 0xef5ff780c4be6ba4
886
+ 884, 0x290d71dc77a56d16
887
+ 885, 0x6d65db9ff58de1e6
888
+ 886, 0x944b063b3805a696
889
+ 887, 0xce468ca2cce33008
890
+ 888, 0x5ba1ccb840f80f48
891
+ 889, 0x28ddce36fc9ad268
892
+ 890, 0x4f77ef254d507a21
893
+ 891, 0xce9b4057fadf3ab
894
+ 892, 0xb518bc68298730e6
895
+ 893, 0xd2eb5b8e2ec665b0
896
+ 894, 0xe1583303a4f87344
897
+ 895, 0x9d5a0df4fbe1bed5
898
+ 896, 0x2ba9bc03ec8cfd07
899
+ 897, 0x479ed880a96ca669
900
+ 898, 0xcedf96338324771a
901
+ 899, 0x312f4fc2da41ffaa
902
+ 900, 0xa0eb9cf23b5e1ed8
903
+ 901, 0xf8f88f975dc3f539
904
+ 902, 0x4a37e185d0e96e0f
905
+ 903, 0xf829654a5c0b46f9
906
+ 904, 0x3909cca7a7f8c7fb
907
+ 905, 0x4c2e1d66ceb45105
908
+ 906, 0xaffaa19e1db8af87
909
+ 907, 0x9ec498246bd18c76
910
+ 908, 0x21d51558edc089da
911
+ 909, 0xe8984112cd1b1561
912
+ 910, 0x7de1d2cf54b0c0e1
913
+ 911, 0xa06729aed50bfb9d
914
+ 912, 0xcf19f733e5db19e1
915
+ 913, 0x70edf2624ab777cd
916
+ 914, 0x46685becad10e078
917
+ 915, 0x825e0f6add46785
918
+ 916, 0x66d4af3b15f70de4
919
+ 917, 0xc676614b0666b21
920
+ 918, 0x282a916c864f5cb7
921
+ 919, 0x2707283a3f512167
922
+ 920, 0x37ff3afda7461623
923
+ 921, 0xc767eb1205e4ca86
924
+ 922, 0x46b359aecc4ea25b
925
+ 923, 0x67fbbb797a16dbb1
926
+ 924, 0x64fd4ba57122290e
927
+ 925, 0x8acc2a8ae59d8fac
928
+ 926, 0x64a49298599acc67
929
+ 927, 0xedf00de67177ce30
930
+ 928, 0x1ea9d8d7e76d2d2c
931
+ 929, 0x363fcac323f70eb2
932
+ 930, 0x19e6e3ec8a9712eb
933
+ 931, 0xca541e96b0961f09
934
+ 932, 0x4d8fd34c2822ec46
935
+ 933, 0x2fdd56a50b32f705
936
+ 934, 0xaac2fcf251e3fd3
937
+ 935, 0xb0c600299e57045c
938
+ 936, 0xd951ec589e909e38
939
+ 937, 0x4dc8414390cae508
940
+ 938, 0x537ef9d5e2321344
941
+ 939, 0xa57bc21fd31aa2dc
942
+ 940, 0xa3a60df564183750
943
+ 941, 0xbe69a5ce2e369fb6
944
+ 942, 0x7744601f4c053ec8
945
+ 943, 0x3838452af42f2612
946
+ 944, 0xd4f0dad7115a54e9
947
+ 945, 0x629cf68d8009a624
948
+ 946, 0x2211c8fa34cb98cb
949
+ 947, 0x8040b19e2213db83
950
+ 948, 0xb2a86d3ba2384fd
951
+ 949, 0x4b85cec4f93f0dab
952
+ 950, 0xc8d212d21ea6845d
953
+ 951, 0x5b271a03a4fe2be0
954
+ 952, 0xff4f671319ad8434
955
+ 953, 0x8e615a919d5afa96
956
+ 954, 0xea7f47c53161160a
957
+ 955, 0x33273930b13c6efc
958
+ 956, 0x98eedda27fb59c3c
959
+ 957, 0x188dc5e92e939677
960
+ 958, 0x9dbd0fa0911430f1
961
+ 959, 0x5b3dcf3fa75dfd2b
962
+ 960, 0x3f03846febdb275d
963
+ 961, 0x20cc24faea9e9cf6
964
+ 962, 0x854f3ac66199ff5d
965
+ 963, 0x31169ac99d341e6f
966
+ 964, 0xa85daed3c0bc1bbe
967
+ 965, 0x64633711e71ba5dd
968
+ 966, 0x530e79978dc73334
969
+ 967, 0x636f2ee6e20aef13
970
+ 968, 0xf6220f8b6d9a58fb
971
+ 969, 0x425db8fa32141a7b
972
+ 970, 0xac7c210f4b02be95
973
+ 971, 0x5fe8cfbe197a7754
974
+ 972, 0xfff7d40c79420ea
975
+ 973, 0x5f8bab9ef4697b77
976
+ 974, 0xaf6fe54e45b23fe8
977
+ 975, 0xce79456ccc70bbce
978
+ 976, 0x645ef680f48f1c00
979
+ 977, 0xa4dfac46e2028595
980
+ 978, 0x6bece4c41effc5df
981
+ 979, 0xd316df886442641f
982
+ 980, 0xa4f6ff994edd2a6
983
+ 981, 0x30281ae3cc49abe4
984
+ 982, 0x39acb7b663dea974
985
+ 983, 0x5e8829b01a7c06fb
986
+ 984, 0x87bdb08cf027f13e
987
+ 985, 0xdfa5ede784e802f6
988
+ 986, 0x46d03d55711c38cc
989
+ 987, 0xa55a961fc9788306
990
+ 988, 0xbf09ded495a2e57a
991
+ 989, 0xcd601b29a639cc16
992
+ 990, 0x2193ce026bfd1085
993
+ 991, 0x25ba27f3f225be13
994
+ 992, 0x6f685be82f64f2fe
995
+ 993, 0xec8454108229c450
996
+ 994, 0x6e79d8d205447a44
997
+ 995, 0x9ed7b6a96b9ccd68
998
+ 996, 0xae7134b3b7f8ee37
999
+ 997, 0x66963de0e5ebcc02
1000
+ 998, 0x29c8dcd0d17c423f
1001
+ 999, 0xfb8482c827eb90bc
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_direct.py ADDED
@@ -0,0 +1,518 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from os.path import join
3
+ import sys
4
+
5
+ import numpy as np
6
+ from numpy.testing import (assert_equal, assert_allclose, assert_array_equal,
7
+ assert_raises)
8
+ import pytest
9
+
10
+ from numpy.random import (
11
+ Generator, MT19937, PCG64, PCG64DXSM, Philox, RandomState, SeedSequence,
12
+ SFC64, default_rng
13
+ )
14
+ from numpy.random._common import interface
15
+
16
+ try:
17
+ import cffi # noqa: F401
18
+
19
+ MISSING_CFFI = False
20
+ except ImportError:
21
+ MISSING_CFFI = True
22
+
23
+ try:
24
+ import ctypes # noqa: F401
25
+
26
+ MISSING_CTYPES = False
27
+ except ImportError:
28
+ MISSING_CTYPES = False
29
+
30
+ if sys.flags.optimize > 1:
31
+ # no docstrings present to inspect when PYTHONOPTIMIZE/Py_OptimizeFlag > 1
32
+ # cffi cannot succeed
33
+ MISSING_CFFI = True
34
+
35
+
36
+ pwd = os.path.dirname(os.path.abspath(__file__))
37
+
38
+
39
+ def assert_state_equal(actual, target):
40
+ for key in actual:
41
+ if isinstance(actual[key], dict):
42
+ assert_state_equal(actual[key], target[key])
43
+ elif isinstance(actual[key], np.ndarray):
44
+ assert_array_equal(actual[key], target[key])
45
+ else:
46
+ assert actual[key] == target[key]
47
+
48
+
49
+ def uint32_to_float32(u):
50
+ return ((u >> np.uint32(8)) * (1.0 / 2**24)).astype(np.float32)
51
+
52
+
53
+ def uniform32_from_uint64(x):
54
+ x = np.uint64(x)
55
+ upper = np.array(x >> np.uint64(32), dtype=np.uint32)
56
+ lower = np.uint64(0xffffffff)
57
+ lower = np.array(x & lower, dtype=np.uint32)
58
+ joined = np.column_stack([lower, upper]).ravel()
59
+ return uint32_to_float32(joined)
60
+
61
+
62
+ def uniform32_from_uint53(x):
63
+ x = np.uint64(x) >> np.uint64(16)
64
+ x = np.uint32(x & np.uint64(0xffffffff))
65
+ return uint32_to_float32(x)
66
+
67
+
68
+ def uniform32_from_uint32(x):
69
+ return uint32_to_float32(x)
70
+
71
+
72
+ def uniform32_from_uint(x, bits):
73
+ if bits == 64:
74
+ return uniform32_from_uint64(x)
75
+ elif bits == 53:
76
+ return uniform32_from_uint53(x)
77
+ elif bits == 32:
78
+ return uniform32_from_uint32(x)
79
+ else:
80
+ raise NotImplementedError
81
+
82
+
83
+ def uniform_from_uint(x, bits):
84
+ if bits in (64, 63, 53):
85
+ return uniform_from_uint64(x)
86
+ elif bits == 32:
87
+ return uniform_from_uint32(x)
88
+
89
+
90
+ def uniform_from_uint64(x):
91
+ return (x >> np.uint64(11)) * (1.0 / 9007199254740992.0)
92
+
93
+
94
+ def uniform_from_uint32(x):
95
+ out = np.empty(len(x) // 2)
96
+ for i in range(0, len(x), 2):
97
+ a = x[i] >> 5
98
+ b = x[i + 1] >> 6
99
+ out[i // 2] = (a * 67108864.0 + b) / 9007199254740992.0
100
+ return out
101
+
102
+
103
+ def uniform_from_dsfmt(x):
104
+ return x.view(np.double) - 1.0
105
+
106
+
107
+ def gauss_from_uint(x, n, bits):
108
+ if bits in (64, 63):
109
+ doubles = uniform_from_uint64(x)
110
+ elif bits == 32:
111
+ doubles = uniform_from_uint32(x)
112
+ else: # bits == 'dsfmt'
113
+ doubles = uniform_from_dsfmt(x)
114
+ gauss = []
115
+ loc = 0
116
+ x1 = x2 = 0.0
117
+ while len(gauss) < n:
118
+ r2 = 2
119
+ while r2 >= 1.0 or r2 == 0.0:
120
+ x1 = 2.0 * doubles[loc] - 1.0
121
+ x2 = 2.0 * doubles[loc + 1] - 1.0
122
+ r2 = x1 * x1 + x2 * x2
123
+ loc += 2
124
+
125
+ f = np.sqrt(-2.0 * np.log(r2) / r2)
126
+ gauss.append(f * x2)
127
+ gauss.append(f * x1)
128
+
129
+ return gauss[:n]
130
+
131
+
132
+ def test_seedsequence():
133
+ from numpy.random.bit_generator import (ISeedSequence,
134
+ ISpawnableSeedSequence,
135
+ SeedlessSeedSequence)
136
+
137
+ s1 = SeedSequence(range(10), spawn_key=(1, 2), pool_size=6)
138
+ s1.spawn(10)
139
+ s2 = SeedSequence(**s1.state)
140
+ assert_equal(s1.state, s2.state)
141
+ assert_equal(s1.n_children_spawned, s2.n_children_spawned)
142
+
143
+ # The interfaces cannot be instantiated themselves.
144
+ assert_raises(TypeError, ISeedSequence)
145
+ assert_raises(TypeError, ISpawnableSeedSequence)
146
+ dummy = SeedlessSeedSequence()
147
+ assert_raises(NotImplementedError, dummy.generate_state, 10)
148
+ assert len(dummy.spawn(10)) == 10
149
+
150
+
151
+ def test_generator_spawning():
152
+ """ Test spawning new generators and bit_generators directly.
153
+ """
154
+ rng = np.random.default_rng()
155
+ seq = rng.bit_generator.seed_seq
156
+ new_ss = seq.spawn(5)
157
+ expected_keys = [seq.spawn_key + (i,) for i in range(5)]
158
+ assert [c.spawn_key for c in new_ss] == expected_keys
159
+
160
+ new_bgs = rng.bit_generator.spawn(5)
161
+ expected_keys = [seq.spawn_key + (i,) for i in range(5, 10)]
162
+ assert [bg.seed_seq.spawn_key for bg in new_bgs] == expected_keys
163
+
164
+ new_rngs = rng.spawn(5)
165
+ expected_keys = [seq.spawn_key + (i,) for i in range(10, 15)]
166
+ found_keys = [rng.bit_generator.seed_seq.spawn_key for rng in new_rngs]
167
+ assert found_keys == expected_keys
168
+
169
+ # Sanity check that streams are actually different:
170
+ assert new_rngs[0].uniform() != new_rngs[1].uniform()
171
+
172
+
173
+ def test_non_spawnable():
174
+ from numpy.random.bit_generator import ISeedSequence
175
+
176
+ class FakeSeedSequence:
177
+ def generate_state(self, n_words, dtype=np.uint32):
178
+ return np.zeros(n_words, dtype=dtype)
179
+
180
+ ISeedSequence.register(FakeSeedSequence)
181
+
182
+ rng = np.random.default_rng(FakeSeedSequence())
183
+
184
+ with pytest.raises(TypeError, match="The underlying SeedSequence"):
185
+ rng.spawn(5)
186
+
187
+ with pytest.raises(TypeError, match="The underlying SeedSequence"):
188
+ rng.bit_generator.spawn(5)
189
+
190
+
191
+ class Base:
192
+ dtype = np.uint64
193
+ data2 = data1 = {}
194
+
195
+ @classmethod
196
+ def setup_class(cls):
197
+ cls.bit_generator = PCG64
198
+ cls.bits = 64
199
+ cls.dtype = np.uint64
200
+ cls.seed_error_type = TypeError
201
+ cls.invalid_init_types = []
202
+ cls.invalid_init_values = []
203
+
204
+ @classmethod
205
+ def _read_csv(cls, filename):
206
+ with open(filename) as csv:
207
+ seed = csv.readline()
208
+ seed = seed.split(',')
209
+ seed = [int(s.strip(), 0) for s in seed[1:]]
210
+ data = []
211
+ for line in csv:
212
+ data.append(int(line.split(',')[-1].strip(), 0))
213
+ return {'seed': seed, 'data': np.array(data, dtype=cls.dtype)}
214
+
215
+ def test_raw(self):
216
+ bit_generator = self.bit_generator(*self.data1['seed'])
217
+ uints = bit_generator.random_raw(1000)
218
+ assert_equal(uints, self.data1['data'])
219
+
220
+ bit_generator = self.bit_generator(*self.data1['seed'])
221
+ uints = bit_generator.random_raw()
222
+ assert_equal(uints, self.data1['data'][0])
223
+
224
+ bit_generator = self.bit_generator(*self.data2['seed'])
225
+ uints = bit_generator.random_raw(1000)
226
+ assert_equal(uints, self.data2['data'])
227
+
228
+ def test_random_raw(self):
229
+ bit_generator = self.bit_generator(*self.data1['seed'])
230
+ uints = bit_generator.random_raw(output=False)
231
+ assert uints is None
232
+ uints = bit_generator.random_raw(1000, output=False)
233
+ assert uints is None
234
+
235
+ def test_gauss_inv(self):
236
+ n = 25
237
+ rs = RandomState(self.bit_generator(*self.data1['seed']))
238
+ gauss = rs.standard_normal(n)
239
+ assert_allclose(gauss,
240
+ gauss_from_uint(self.data1['data'], n, self.bits))
241
+
242
+ rs = RandomState(self.bit_generator(*self.data2['seed']))
243
+ gauss = rs.standard_normal(25)
244
+ assert_allclose(gauss,
245
+ gauss_from_uint(self.data2['data'], n, self.bits))
246
+
247
+ def test_uniform_double(self):
248
+ rs = Generator(self.bit_generator(*self.data1['seed']))
249
+ vals = uniform_from_uint(self.data1['data'], self.bits)
250
+ uniforms = rs.random(len(vals))
251
+ assert_allclose(uniforms, vals)
252
+ assert_equal(uniforms.dtype, np.float64)
253
+
254
+ rs = Generator(self.bit_generator(*self.data2['seed']))
255
+ vals = uniform_from_uint(self.data2['data'], self.bits)
256
+ uniforms = rs.random(len(vals))
257
+ assert_allclose(uniforms, vals)
258
+ assert_equal(uniforms.dtype, np.float64)
259
+
260
+ def test_uniform_float(self):
261
+ rs = Generator(self.bit_generator(*self.data1['seed']))
262
+ vals = uniform32_from_uint(self.data1['data'], self.bits)
263
+ uniforms = rs.random(len(vals), dtype=np.float32)
264
+ assert_allclose(uniforms, vals)
265
+ assert_equal(uniforms.dtype, np.float32)
266
+
267
+ rs = Generator(self.bit_generator(*self.data2['seed']))
268
+ vals = uniform32_from_uint(self.data2['data'], self.bits)
269
+ uniforms = rs.random(len(vals), dtype=np.float32)
270
+ assert_allclose(uniforms, vals)
271
+ assert_equal(uniforms.dtype, np.float32)
272
+
273
+ def test_repr(self):
274
+ rs = Generator(self.bit_generator(*self.data1['seed']))
275
+ assert 'Generator' in repr(rs)
276
+ assert f'{id(rs):#x}'.upper().replace('X', 'x') in repr(rs)
277
+
278
+ def test_str(self):
279
+ rs = Generator(self.bit_generator(*self.data1['seed']))
280
+ assert 'Generator' in str(rs)
281
+ assert str(self.bit_generator.__name__) in str(rs)
282
+ assert f'{id(rs):#x}'.upper().replace('X', 'x') not in str(rs)
283
+
284
+ def test_pickle(self):
285
+ import pickle
286
+
287
+ bit_generator = self.bit_generator(*self.data1['seed'])
288
+ state = bit_generator.state
289
+ bitgen_pkl = pickle.dumps(bit_generator)
290
+ reloaded = pickle.loads(bitgen_pkl)
291
+ reloaded_state = reloaded.state
292
+ assert_array_equal(Generator(bit_generator).standard_normal(1000),
293
+ Generator(reloaded).standard_normal(1000))
294
+ assert bit_generator is not reloaded
295
+ assert_state_equal(reloaded_state, state)
296
+
297
+ ss = SeedSequence(100)
298
+ aa = pickle.loads(pickle.dumps(ss))
299
+ assert_equal(ss.state, aa.state)
300
+
301
+ def test_invalid_state_type(self):
302
+ bit_generator = self.bit_generator(*self.data1['seed'])
303
+ with pytest.raises(TypeError):
304
+ bit_generator.state = {'1'}
305
+
306
+ def test_invalid_state_value(self):
307
+ bit_generator = self.bit_generator(*self.data1['seed'])
308
+ state = bit_generator.state
309
+ state['bit_generator'] = 'otherBitGenerator'
310
+ with pytest.raises(ValueError):
311
+ bit_generator.state = state
312
+
313
+ def test_invalid_init_type(self):
314
+ bit_generator = self.bit_generator
315
+ for st in self.invalid_init_types:
316
+ with pytest.raises(TypeError):
317
+ bit_generator(*st)
318
+
319
+ def test_invalid_init_values(self):
320
+ bit_generator = self.bit_generator
321
+ for st in self.invalid_init_values:
322
+ with pytest.raises((ValueError, OverflowError)):
323
+ bit_generator(*st)
324
+
325
+ def test_benchmark(self):
326
+ bit_generator = self.bit_generator(*self.data1['seed'])
327
+ bit_generator._benchmark(1)
328
+ bit_generator._benchmark(1, 'double')
329
+ with pytest.raises(ValueError):
330
+ bit_generator._benchmark(1, 'int32')
331
+
332
+ @pytest.mark.skipif(MISSING_CFFI, reason='cffi not available')
333
+ def test_cffi(self):
334
+ bit_generator = self.bit_generator(*self.data1['seed'])
335
+ cffi_interface = bit_generator.cffi
336
+ assert isinstance(cffi_interface, interface)
337
+ other_cffi_interface = bit_generator.cffi
338
+ assert other_cffi_interface is cffi_interface
339
+
340
+ @pytest.mark.skipif(MISSING_CTYPES, reason='ctypes not available')
341
+ def test_ctypes(self):
342
+ bit_generator = self.bit_generator(*self.data1['seed'])
343
+ ctypes_interface = bit_generator.ctypes
344
+ assert isinstance(ctypes_interface, interface)
345
+ other_ctypes_interface = bit_generator.ctypes
346
+ assert other_ctypes_interface is ctypes_interface
347
+
348
+ def test_getstate(self):
349
+ bit_generator = self.bit_generator(*self.data1['seed'])
350
+ state = bit_generator.state
351
+ alt_state = bit_generator.__getstate__()
352
+ assert_state_equal(state, alt_state)
353
+
354
+
355
+ class TestPhilox(Base):
356
+ @classmethod
357
+ def setup_class(cls):
358
+ cls.bit_generator = Philox
359
+ cls.bits = 64
360
+ cls.dtype = np.uint64
361
+ cls.data1 = cls._read_csv(
362
+ join(pwd, './data/philox-testset-1.csv'))
363
+ cls.data2 = cls._read_csv(
364
+ join(pwd, './data/philox-testset-2.csv'))
365
+ cls.seed_error_type = TypeError
366
+ cls.invalid_init_types = []
367
+ cls.invalid_init_values = [(1, None, 1), (-1,), (None, None, 2 ** 257 + 1)]
368
+
369
+ def test_set_key(self):
370
+ bit_generator = self.bit_generator(*self.data1['seed'])
371
+ state = bit_generator.state
372
+ keyed = self.bit_generator(counter=state['state']['counter'],
373
+ key=state['state']['key'])
374
+ assert_state_equal(bit_generator.state, keyed.state)
375
+
376
+
377
+ class TestPCG64(Base):
378
+ @classmethod
379
+ def setup_class(cls):
380
+ cls.bit_generator = PCG64
381
+ cls.bits = 64
382
+ cls.dtype = np.uint64
383
+ cls.data1 = cls._read_csv(join(pwd, './data/pcg64-testset-1.csv'))
384
+ cls.data2 = cls._read_csv(join(pwd, './data/pcg64-testset-2.csv'))
385
+ cls.seed_error_type = (ValueError, TypeError)
386
+ cls.invalid_init_types = [(3.2,), ([None],), (1, None)]
387
+ cls.invalid_init_values = [(-1,)]
388
+
389
+ def test_advance_symmetry(self):
390
+ rs = Generator(self.bit_generator(*self.data1['seed']))
391
+ state = rs.bit_generator.state
392
+ step = -0x9e3779b97f4a7c150000000000000000
393
+ rs.bit_generator.advance(step)
394
+ val_neg = rs.integers(10)
395
+ rs.bit_generator.state = state
396
+ rs.bit_generator.advance(2**128 + step)
397
+ val_pos = rs.integers(10)
398
+ rs.bit_generator.state = state
399
+ rs.bit_generator.advance(10 * 2**128 + step)
400
+ val_big = rs.integers(10)
401
+ assert val_neg == val_pos
402
+ assert val_big == val_pos
403
+
404
+ def test_advange_large(self):
405
+ rs = Generator(self.bit_generator(38219308213743))
406
+ pcg = rs.bit_generator
407
+ state = pcg.state["state"]
408
+ initial_state = 287608843259529770491897792873167516365
409
+ assert state["state"] == initial_state
410
+ pcg.advance(sum(2**i for i in (96, 64, 32, 16, 8, 4, 2, 1)))
411
+ state = pcg.state["state"]
412
+ advanced_state = 135275564607035429730177404003164635391
413
+ assert state["state"] == advanced_state
414
+
415
+
416
+ class TestPCG64DXSM(Base):
417
+ @classmethod
418
+ def setup_class(cls):
419
+ cls.bit_generator = PCG64DXSM
420
+ cls.bits = 64
421
+ cls.dtype = np.uint64
422
+ cls.data1 = cls._read_csv(join(pwd, './data/pcg64dxsm-testset-1.csv'))
423
+ cls.data2 = cls._read_csv(join(pwd, './data/pcg64dxsm-testset-2.csv'))
424
+ cls.seed_error_type = (ValueError, TypeError)
425
+ cls.invalid_init_types = [(3.2,), ([None],), (1, None)]
426
+ cls.invalid_init_values = [(-1,)]
427
+
428
+ def test_advance_symmetry(self):
429
+ rs = Generator(self.bit_generator(*self.data1['seed']))
430
+ state = rs.bit_generator.state
431
+ step = -0x9e3779b97f4a7c150000000000000000
432
+ rs.bit_generator.advance(step)
433
+ val_neg = rs.integers(10)
434
+ rs.bit_generator.state = state
435
+ rs.bit_generator.advance(2**128 + step)
436
+ val_pos = rs.integers(10)
437
+ rs.bit_generator.state = state
438
+ rs.bit_generator.advance(10 * 2**128 + step)
439
+ val_big = rs.integers(10)
440
+ assert val_neg == val_pos
441
+ assert val_big == val_pos
442
+
443
+ def test_advange_large(self):
444
+ rs = Generator(self.bit_generator(38219308213743))
445
+ pcg = rs.bit_generator
446
+ state = pcg.state
447
+ initial_state = 287608843259529770491897792873167516365
448
+ assert state["state"]["state"] == initial_state
449
+ pcg.advance(sum(2**i for i in (96, 64, 32, 16, 8, 4, 2, 1)))
450
+ state = pcg.state["state"]
451
+ advanced_state = 277778083536782149546677086420637664879
452
+ assert state["state"] == advanced_state
453
+
454
+
455
+ class TestMT19937(Base):
456
+ @classmethod
457
+ def setup_class(cls):
458
+ cls.bit_generator = MT19937
459
+ cls.bits = 32
460
+ cls.dtype = np.uint32
461
+ cls.data1 = cls._read_csv(join(pwd, './data/mt19937-testset-1.csv'))
462
+ cls.data2 = cls._read_csv(join(pwd, './data/mt19937-testset-2.csv'))
463
+ cls.seed_error_type = ValueError
464
+ cls.invalid_init_types = []
465
+ cls.invalid_init_values = [(-1,)]
466
+
467
+ def test_seed_float_array(self):
468
+ assert_raises(TypeError, self.bit_generator, np.array([np.pi]))
469
+ assert_raises(TypeError, self.bit_generator, np.array([-np.pi]))
470
+ assert_raises(TypeError, self.bit_generator, np.array([np.pi, -np.pi]))
471
+ assert_raises(TypeError, self.bit_generator, np.array([0, np.pi]))
472
+ assert_raises(TypeError, self.bit_generator, [np.pi])
473
+ assert_raises(TypeError, self.bit_generator, [0, np.pi])
474
+
475
+ def test_state_tuple(self):
476
+ rs = Generator(self.bit_generator(*self.data1['seed']))
477
+ bit_generator = rs.bit_generator
478
+ state = bit_generator.state
479
+ desired = rs.integers(2 ** 16)
480
+ tup = (state['bit_generator'], state['state']['key'],
481
+ state['state']['pos'])
482
+ bit_generator.state = tup
483
+ actual = rs.integers(2 ** 16)
484
+ assert_equal(actual, desired)
485
+ tup = tup + (0, 0.0)
486
+ bit_generator.state = tup
487
+ actual = rs.integers(2 ** 16)
488
+ assert_equal(actual, desired)
489
+
490
+
491
+ class TestSFC64(Base):
492
+ @classmethod
493
+ def setup_class(cls):
494
+ cls.bit_generator = SFC64
495
+ cls.bits = 64
496
+ cls.dtype = np.uint64
497
+ cls.data1 = cls._read_csv(
498
+ join(pwd, './data/sfc64-testset-1.csv'))
499
+ cls.data2 = cls._read_csv(
500
+ join(pwd, './data/sfc64-testset-2.csv'))
501
+ cls.seed_error_type = (ValueError, TypeError)
502
+ cls.invalid_init_types = [(3.2,), ([None],), (1, None)]
503
+ cls.invalid_init_values = [(-1,)]
504
+
505
+
506
+ class TestDefaultRNG:
507
+ def test_seed(self):
508
+ for args in [(), (None,), (1234,), ([1234, 5678],)]:
509
+ rg = default_rng(*args)
510
+ assert isinstance(rg.bit_generator, PCG64)
511
+
512
+ def test_passthrough(self):
513
+ bg = Philox()
514
+ rg = default_rng(bg)
515
+ assert rg.bit_generator is bg
516
+ rg2 = default_rng(rg)
517
+ assert rg2 is rg
518
+ assert rg2.bit_generator is bg
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_extending.py ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from importlib.util import spec_from_file_location, module_from_spec
2
+ import os
3
+ import pathlib
4
+ import pytest
5
+ import shutil
6
+ import subprocess
7
+ import sys
8
+ import sysconfig
9
+ import textwrap
10
+ import warnings
11
+
12
+ import numpy as np
13
+ from numpy.testing import IS_WASM
14
+
15
+
16
+ try:
17
+ import cffi
18
+ except ImportError:
19
+ cffi = None
20
+
21
+ if sys.flags.optimize > 1:
22
+ # no docstrings present to inspect when PYTHONOPTIMIZE/Py_OptimizeFlag > 1
23
+ # cffi cannot succeed
24
+ cffi = None
25
+
26
+ try:
27
+ with warnings.catch_warnings(record=True) as w:
28
+ # numba issue gh-4733
29
+ warnings.filterwarnings('always', '', DeprecationWarning)
30
+ import numba
31
+ except (ImportError, SystemError):
32
+ # Certain numpy/numba versions trigger a SystemError due to a numba bug
33
+ numba = None
34
+
35
+ try:
36
+ import cython
37
+ from Cython.Compiler.Version import version as cython_version
38
+ except ImportError:
39
+ cython = None
40
+ else:
41
+ from numpy._utils import _pep440
42
+ # Cython 0.29.30 is required for Python 3.11 and there are
43
+ # other fixes in the 0.29 series that are needed even for earlier
44
+ # Python versions.
45
+ # Note: keep in sync with the one in pyproject.toml
46
+ required_version = '0.29.35'
47
+ if _pep440.parse(cython_version) < _pep440.Version(required_version):
48
+ # too old or wrong cython, skip the test
49
+ cython = None
50
+
51
+
52
+ @pytest.mark.skipif(
53
+ sys.platform == "win32" and sys.maxsize < 2**32,
54
+ reason="Failing in 32-bit Windows wheel build job, skip for now"
55
+ )
56
+ @pytest.mark.skipif(IS_WASM, reason="Can't start subprocess")
57
+ @pytest.mark.skipif(cython is None, reason="requires cython")
58
+ @pytest.mark.slow
59
+ def test_cython(tmp_path):
60
+ import glob
61
+ # build the examples in a temporary directory
62
+ srcdir = os.path.join(os.path.dirname(__file__), '..')
63
+ shutil.copytree(srcdir, tmp_path / 'random')
64
+ build_dir = tmp_path / 'random' / '_examples' / 'cython'
65
+ target_dir = build_dir / "build"
66
+ os.makedirs(target_dir, exist_ok=True)
67
+ if sys.platform == "win32":
68
+ subprocess.check_call(["meson", "setup",
69
+ "--buildtype=release",
70
+ "--vsenv", str(build_dir)],
71
+ cwd=target_dir,
72
+ )
73
+ else:
74
+ subprocess.check_call(["meson", "setup", str(build_dir)],
75
+ cwd=target_dir
76
+ )
77
+ subprocess.check_call(["meson", "compile", "-vv"], cwd=target_dir)
78
+
79
+ # gh-16162: make sure numpy's __init__.pxd was used for cython
80
+ # not really part of this test, but it is a convenient place to check
81
+
82
+ g = glob.glob(str(target_dir / "*" / "extending.pyx.c"))
83
+ with open(g[0]) as fid:
84
+ txt_to_find = 'NumPy API declarations from "numpy/__init__'
85
+ for i, line in enumerate(fid):
86
+ if txt_to_find in line:
87
+ break
88
+ else:
89
+ assert False, ("Could not find '{}' in C file, "
90
+ "wrong pxd used".format(txt_to_find))
91
+ # import without adding the directory to sys.path
92
+ suffix = sysconfig.get_config_var('EXT_SUFFIX')
93
+
94
+ def load(modname):
95
+ so = (target_dir / modname).with_suffix(suffix)
96
+ spec = spec_from_file_location(modname, so)
97
+ mod = module_from_spec(spec)
98
+ spec.loader.exec_module(mod)
99
+ return mod
100
+
101
+ # test that the module can be imported
102
+ load("extending")
103
+ load("extending_cpp")
104
+ # actually test the cython c-extension
105
+ extending_distributions = load("extending_distributions")
106
+ from numpy.random import PCG64
107
+ values = extending_distributions.uniforms_ex(PCG64(0), 10, 'd')
108
+ assert values.shape == (10,)
109
+ assert values.dtype == np.float64
110
+
111
+ @pytest.mark.skipif(numba is None or cffi is None,
112
+ reason="requires numba and cffi")
113
+ def test_numba():
114
+ from numpy.random._examples.numba import extending # noqa: F401
115
+
116
+ @pytest.mark.skipif(cffi is None, reason="requires cffi")
117
+ def test_cffi():
118
+ from numpy.random._examples.cffi import extending # noqa: F401
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_generator_mt19937.py ADDED
The diff for this file is too large to render. See raw diff
 
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_generator_mt19937_regressions.py ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from numpy.testing import (assert_, assert_array_equal)
2
+ import numpy as np
3
+ import pytest
4
+ from numpy.random import Generator, MT19937
5
+
6
+
7
+ class TestRegression:
8
+
9
+ def setup_method(self):
10
+ self.mt19937 = Generator(MT19937(121263137472525314065))
11
+
12
+ def test_vonmises_range(self):
13
+ # Make sure generated random variables are in [-pi, pi].
14
+ # Regression test for ticket #986.
15
+ for mu in np.linspace(-7., 7., 5):
16
+ r = self.mt19937.vonmises(mu, 1, 50)
17
+ assert_(np.all(r > -np.pi) and np.all(r <= np.pi))
18
+
19
+ def test_hypergeometric_range(self):
20
+ # Test for ticket #921
21
+ assert_(np.all(self.mt19937.hypergeometric(3, 18, 11, size=10) < 4))
22
+ assert_(np.all(self.mt19937.hypergeometric(18, 3, 11, size=10) > 0))
23
+
24
+ # Test for ticket #5623
25
+ args = (2**20 - 2, 2**20 - 2, 2**20 - 2) # Check for 32-bit systems
26
+ assert_(self.mt19937.hypergeometric(*args) > 0)
27
+
28
+ def test_logseries_convergence(self):
29
+ # Test for ticket #923
30
+ N = 1000
31
+ rvsn = self.mt19937.logseries(0.8, size=N)
32
+ # these two frequency counts should be close to theoretical
33
+ # numbers with this large sample
34
+ # theoretical large N result is 0.49706795
35
+ freq = np.sum(rvsn == 1) / N
36
+ msg = f'Frequency was {freq:f}, should be > 0.45'
37
+ assert_(freq > 0.45, msg)
38
+ # theoretical large N result is 0.19882718
39
+ freq = np.sum(rvsn == 2) / N
40
+ msg = f'Frequency was {freq:f}, should be < 0.23'
41
+ assert_(freq < 0.23, msg)
42
+
43
+ def test_shuffle_mixed_dimension(self):
44
+ # Test for trac ticket #2074
45
+ for t in [[1, 2, 3, None],
46
+ [(1, 1), (2, 2), (3, 3), None],
47
+ [1, (2, 2), (3, 3), None],
48
+ [(1, 1), 2, 3, None]]:
49
+ mt19937 = Generator(MT19937(12345))
50
+ shuffled = np.array(t, dtype=object)
51
+ mt19937.shuffle(shuffled)
52
+ expected = np.array([t[2], t[0], t[3], t[1]], dtype=object)
53
+ assert_array_equal(np.array(shuffled, dtype=object), expected)
54
+
55
+ def test_call_within_randomstate(self):
56
+ # Check that custom BitGenerator does not call into global state
57
+ res = np.array([1, 8, 0, 1, 5, 3, 3, 8, 1, 4])
58
+ for i in range(3):
59
+ mt19937 = Generator(MT19937(i))
60
+ m = Generator(MT19937(4321))
61
+ # If m.state is not honored, the result will change
62
+ assert_array_equal(m.choice(10, size=10, p=np.ones(10)/10.), res)
63
+
64
+ def test_multivariate_normal_size_types(self):
65
+ # Test for multivariate_normal issue with 'size' argument.
66
+ # Check that the multivariate_normal size argument can be a
67
+ # numpy integer.
68
+ self.mt19937.multivariate_normal([0], [[0]], size=1)
69
+ self.mt19937.multivariate_normal([0], [[0]], size=np.int_(1))
70
+ self.mt19937.multivariate_normal([0], [[0]], size=np.int64(1))
71
+
72
+ def test_beta_small_parameters(self):
73
+ # Test that beta with small a and b parameters does not produce
74
+ # NaNs due to roundoff errors causing 0 / 0, gh-5851
75
+ x = self.mt19937.beta(0.0001, 0.0001, size=100)
76
+ assert_(not np.any(np.isnan(x)), 'Nans in mt19937.beta')
77
+
78
+ def test_beta_very_small_parameters(self):
79
+ # gh-24203: beta would hang with very small parameters.
80
+ self.mt19937.beta(1e-49, 1e-40)
81
+
82
+ def test_beta_ridiculously_small_parameters(self):
83
+ # gh-24266: beta would generate nan when the parameters
84
+ # were subnormal or a small multiple of the smallest normal.
85
+ tiny = np.finfo(1.0).tiny
86
+ x = self.mt19937.beta(tiny/32, tiny/40, size=50)
87
+ assert not np.any(np.isnan(x))
88
+
89
+ def test_choice_sum_of_probs_tolerance(self):
90
+ # The sum of probs should be 1.0 with some tolerance.
91
+ # For low precision dtypes the tolerance was too tight.
92
+ # See numpy github issue 6123.
93
+ a = [1, 2, 3]
94
+ counts = [4, 4, 2]
95
+ for dt in np.float16, np.float32, np.float64:
96
+ probs = np.array(counts, dtype=dt) / sum(counts)
97
+ c = self.mt19937.choice(a, p=probs)
98
+ assert_(c in a)
99
+ with pytest.raises(ValueError):
100
+ self.mt19937.choice(a, p=probs*0.9)
101
+
102
+ def test_shuffle_of_array_of_different_length_strings(self):
103
+ # Test that permuting an array of different length strings
104
+ # will not cause a segfault on garbage collection
105
+ # Tests gh-7710
106
+
107
+ a = np.array(['a', 'a' * 1000])
108
+
109
+ for _ in range(100):
110
+ self.mt19937.shuffle(a)
111
+
112
+ # Force Garbage Collection - should not segfault.
113
+ import gc
114
+ gc.collect()
115
+
116
+ def test_shuffle_of_array_of_objects(self):
117
+ # Test that permuting an array of objects will not cause
118
+ # a segfault on garbage collection.
119
+ # See gh-7719
120
+ a = np.array([np.arange(1), np.arange(4)], dtype=object)
121
+
122
+ for _ in range(1000):
123
+ self.mt19937.shuffle(a)
124
+
125
+ # Force Garbage Collection - should not segfault.
126
+ import gc
127
+ gc.collect()
128
+
129
+ def test_permutation_subclass(self):
130
+
131
+ class N(np.ndarray):
132
+ pass
133
+
134
+ mt19937 = Generator(MT19937(1))
135
+ orig = np.arange(3).view(N)
136
+ perm = mt19937.permutation(orig)
137
+ assert_array_equal(perm, np.array([2, 0, 1]))
138
+ assert_array_equal(orig, np.arange(3).view(N))
139
+
140
+ class M:
141
+ a = np.arange(5)
142
+
143
+ def __array__(self):
144
+ return self.a
145
+
146
+ mt19937 = Generator(MT19937(1))
147
+ m = M()
148
+ perm = mt19937.permutation(m)
149
+ assert_array_equal(perm, np.array([4, 1, 3, 0, 2]))
150
+ assert_array_equal(m.__array__(), np.arange(5))
151
+
152
+ def test_gamma_0(self):
153
+ assert self.mt19937.standard_gamma(0.0) == 0.0
154
+ assert_array_equal(self.mt19937.standard_gamma([0.0]), 0.0)
155
+
156
+ actual = self.mt19937.standard_gamma([0.0], dtype='float')
157
+ expected = np.array([0.], dtype=np.float32)
158
+ assert_array_equal(actual, expected)
159
+
160
+ def test_geometric_tiny_prob(self):
161
+ # Regression test for gh-17007.
162
+ # When p = 1e-30, the probability that a sample will exceed 2**63-1
163
+ # is 0.9999999999907766, so we expect the result to be all 2**63-1.
164
+ assert_array_equal(self.mt19937.geometric(p=1e-30, size=3),
165
+ np.iinfo(np.int64).max)
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_random.py ADDED
@@ -0,0 +1,1750 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import warnings
2
+
3
+ import pytest
4
+
5
+ import numpy as np
6
+ from numpy.testing import (
7
+ assert_, assert_raises, assert_equal, assert_warns,
8
+ assert_no_warnings, assert_array_equal, assert_array_almost_equal,
9
+ suppress_warnings, IS_WASM
10
+ )
11
+ from numpy import random
12
+ import sys
13
+
14
+
15
+ class TestSeed:
16
+ def test_scalar(self):
17
+ s = np.random.RandomState(0)
18
+ assert_equal(s.randint(1000), 684)
19
+ s = np.random.RandomState(4294967295)
20
+ assert_equal(s.randint(1000), 419)
21
+
22
+ def test_array(self):
23
+ s = np.random.RandomState(range(10))
24
+ assert_equal(s.randint(1000), 468)
25
+ s = np.random.RandomState(np.arange(10))
26
+ assert_equal(s.randint(1000), 468)
27
+ s = np.random.RandomState([0])
28
+ assert_equal(s.randint(1000), 973)
29
+ s = np.random.RandomState([4294967295])
30
+ assert_equal(s.randint(1000), 265)
31
+
32
+ def test_invalid_scalar(self):
33
+ # seed must be an unsigned 32 bit integer
34
+ assert_raises(TypeError, np.random.RandomState, -0.5)
35
+ assert_raises(ValueError, np.random.RandomState, -1)
36
+
37
+ def test_invalid_array(self):
38
+ # seed must be an unsigned 32 bit integer
39
+ assert_raises(TypeError, np.random.RandomState, [-0.5])
40
+ assert_raises(ValueError, np.random.RandomState, [-1])
41
+ assert_raises(ValueError, np.random.RandomState, [4294967296])
42
+ assert_raises(ValueError, np.random.RandomState, [1, 2, 4294967296])
43
+ assert_raises(ValueError, np.random.RandomState, [1, -2, 4294967296])
44
+
45
+ def test_invalid_array_shape(self):
46
+ # gh-9832
47
+ assert_raises(ValueError, np.random.RandomState,
48
+ np.array([], dtype=np.int64))
49
+ assert_raises(ValueError, np.random.RandomState, [[1, 2, 3]])
50
+ assert_raises(ValueError, np.random.RandomState, [[1, 2, 3],
51
+ [4, 5, 6]])
52
+
53
+
54
+ class TestBinomial:
55
+ def test_n_zero(self):
56
+ # Tests the corner case of n == 0 for the binomial distribution.
57
+ # binomial(0, p) should be zero for any p in [0, 1].
58
+ # This test addresses issue #3480.
59
+ zeros = np.zeros(2, dtype='int')
60
+ for p in [0, .5, 1]:
61
+ assert_(random.binomial(0, p) == 0)
62
+ assert_array_equal(random.binomial(zeros, p), zeros)
63
+
64
+ def test_p_is_nan(self):
65
+ # Issue #4571.
66
+ assert_raises(ValueError, random.binomial, 1, np.nan)
67
+
68
+
69
+ class TestMultinomial:
70
+ def test_basic(self):
71
+ random.multinomial(100, [0.2, 0.8])
72
+
73
+ def test_zero_probability(self):
74
+ random.multinomial(100, [0.2, 0.8, 0.0, 0.0, 0.0])
75
+
76
+ def test_int_negative_interval(self):
77
+ assert_(-5 <= random.randint(-5, -1) < -1)
78
+ x = random.randint(-5, -1, 5)
79
+ assert_(np.all(-5 <= x))
80
+ assert_(np.all(x < -1))
81
+
82
+ def test_size(self):
83
+ # gh-3173
84
+ p = [0.5, 0.5]
85
+ assert_equal(np.random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
86
+ assert_equal(np.random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
87
+ assert_equal(np.random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
88
+ assert_equal(np.random.multinomial(1, p, [2, 2]).shape, (2, 2, 2))
89
+ assert_equal(np.random.multinomial(1, p, (2, 2)).shape, (2, 2, 2))
90
+ assert_equal(np.random.multinomial(1, p, np.array((2, 2))).shape,
91
+ (2, 2, 2))
92
+
93
+ assert_raises(TypeError, np.random.multinomial, 1, p,
94
+ float(1))
95
+
96
+ def test_multidimensional_pvals(self):
97
+ assert_raises(ValueError, np.random.multinomial, 10, [[0, 1]])
98
+ assert_raises(ValueError, np.random.multinomial, 10, [[0], [1]])
99
+ assert_raises(ValueError, np.random.multinomial, 10, [[[0], [1]], [[1], [0]]])
100
+ assert_raises(ValueError, np.random.multinomial, 10, np.array([[0, 1], [1, 0]]))
101
+
102
+
103
+ class TestSetState:
104
+ def setup_method(self):
105
+ self.seed = 1234567890
106
+ self.prng = random.RandomState(self.seed)
107
+ self.state = self.prng.get_state()
108
+
109
+ def test_basic(self):
110
+ old = self.prng.tomaxint(16)
111
+ self.prng.set_state(self.state)
112
+ new = self.prng.tomaxint(16)
113
+ assert_(np.all(old == new))
114
+
115
+ def test_gaussian_reset(self):
116
+ # Make sure the cached every-other-Gaussian is reset.
117
+ old = self.prng.standard_normal(size=3)
118
+ self.prng.set_state(self.state)
119
+ new = self.prng.standard_normal(size=3)
120
+ assert_(np.all(old == new))
121
+
122
+ def test_gaussian_reset_in_media_res(self):
123
+ # When the state is saved with a cached Gaussian, make sure the
124
+ # cached Gaussian is restored.
125
+
126
+ self.prng.standard_normal()
127
+ state = self.prng.get_state()
128
+ old = self.prng.standard_normal(size=3)
129
+ self.prng.set_state(state)
130
+ new = self.prng.standard_normal(size=3)
131
+ assert_(np.all(old == new))
132
+
133
+ def test_backwards_compatibility(self):
134
+ # Make sure we can accept old state tuples that do not have the
135
+ # cached Gaussian value.
136
+ old_state = self.state[:-2]
137
+ x1 = self.prng.standard_normal(size=16)
138
+ self.prng.set_state(old_state)
139
+ x2 = self.prng.standard_normal(size=16)
140
+ self.prng.set_state(self.state)
141
+ x3 = self.prng.standard_normal(size=16)
142
+ assert_(np.all(x1 == x2))
143
+ assert_(np.all(x1 == x3))
144
+
145
+ def test_negative_binomial(self):
146
+ # Ensure that the negative binomial results take floating point
147
+ # arguments without truncation.
148
+ self.prng.negative_binomial(0.5, 0.5)
149
+
150
+ def test_set_invalid_state(self):
151
+ # gh-25402
152
+ with pytest.raises(IndexError):
153
+ self.prng.set_state(())
154
+
155
+
156
+ class TestRandint:
157
+
158
+ rfunc = np.random.randint
159
+
160
+ # valid integer/boolean types
161
+ itype = [np.bool_, np.int8, np.uint8, np.int16, np.uint16,
162
+ np.int32, np.uint32, np.int64, np.uint64]
163
+
164
+ def test_unsupported_type(self):
165
+ assert_raises(TypeError, self.rfunc, 1, dtype=float)
166
+
167
+ def test_bounds_checking(self):
168
+ for dt in self.itype:
169
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
170
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
171
+ assert_raises(ValueError, self.rfunc, lbnd - 1, ubnd, dtype=dt)
172
+ assert_raises(ValueError, self.rfunc, lbnd, ubnd + 1, dtype=dt)
173
+ assert_raises(ValueError, self.rfunc, ubnd, lbnd, dtype=dt)
174
+ assert_raises(ValueError, self.rfunc, 1, 0, dtype=dt)
175
+
176
+ def test_rng_zero_and_extremes(self):
177
+ for dt in self.itype:
178
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
179
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
180
+
181
+ tgt = ubnd - 1
182
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
183
+
184
+ tgt = lbnd
185
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
186
+
187
+ tgt = (lbnd + ubnd)//2
188
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
189
+
190
+ def test_full_range(self):
191
+ # Test for ticket #1690
192
+
193
+ for dt in self.itype:
194
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
195
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
196
+
197
+ try:
198
+ self.rfunc(lbnd, ubnd, dtype=dt)
199
+ except Exception as e:
200
+ raise AssertionError("No error should have been raised, "
201
+ "but one was with the following "
202
+ "message:\n\n%s" % str(e))
203
+
204
+ def test_in_bounds_fuzz(self):
205
+ # Don't use fixed seed
206
+ np.random.seed()
207
+
208
+ for dt in self.itype[1:]:
209
+ for ubnd in [4, 8, 16]:
210
+ vals = self.rfunc(2, ubnd, size=2**16, dtype=dt)
211
+ assert_(vals.max() < ubnd)
212
+ assert_(vals.min() >= 2)
213
+
214
+ vals = self.rfunc(0, 2, size=2**16, dtype=np.bool_)
215
+
216
+ assert_(vals.max() < 2)
217
+ assert_(vals.min() >= 0)
218
+
219
+ def test_repeatability(self):
220
+ import hashlib
221
+ # We use a sha256 hash of generated sequences of 1000 samples
222
+ # in the range [0, 6) for all but bool, where the range
223
+ # is [0, 2). Hashes are for little endian numbers.
224
+ tgt = {'bool': '509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71',
225
+ 'int16': '7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4',
226
+ 'int32': 'e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92f',
227
+ 'int64': '0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9e',
228
+ 'int8': '001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404',
229
+ 'uint16': '7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4',
230
+ 'uint32': 'e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92f',
231
+ 'uint64': '0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9e',
232
+ 'uint8': '001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404'}
233
+
234
+ for dt in self.itype[1:]:
235
+ np.random.seed(1234)
236
+
237
+ # view as little endian for hash
238
+ if sys.byteorder == 'little':
239
+ val = self.rfunc(0, 6, size=1000, dtype=dt)
240
+ else:
241
+ val = self.rfunc(0, 6, size=1000, dtype=dt).byteswap()
242
+
243
+ res = hashlib.sha256(val.view(np.int8)).hexdigest()
244
+ assert_(tgt[np.dtype(dt).name] == res)
245
+
246
+ # bools do not depend on endianness
247
+ np.random.seed(1234)
248
+ val = self.rfunc(0, 2, size=1000, dtype=bool).view(np.int8)
249
+ res = hashlib.sha256(val).hexdigest()
250
+ assert_(tgt[np.dtype(bool).name] == res)
251
+
252
+ def test_int64_uint64_corner_case(self):
253
+ # When stored in Numpy arrays, `lbnd` is casted
254
+ # as np.int64, and `ubnd` is casted as np.uint64.
255
+ # Checking whether `lbnd` >= `ubnd` used to be
256
+ # done solely via direct comparison, which is incorrect
257
+ # because when Numpy tries to compare both numbers,
258
+ # it casts both to np.float64 because there is
259
+ # no integer superset of np.int64 and np.uint64. However,
260
+ # `ubnd` is too large to be represented in np.float64,
261
+ # causing it be round down to np.iinfo(np.int64).max,
262
+ # leading to a ValueError because `lbnd` now equals
263
+ # the new `ubnd`.
264
+
265
+ dt = np.int64
266
+ tgt = np.iinfo(np.int64).max
267
+ lbnd = np.int64(np.iinfo(np.int64).max)
268
+ ubnd = np.uint64(np.iinfo(np.int64).max + 1)
269
+
270
+ # None of these function calls should
271
+ # generate a ValueError now.
272
+ actual = np.random.randint(lbnd, ubnd, dtype=dt)
273
+ assert_equal(actual, tgt)
274
+
275
+ def test_respect_dtype_singleton(self):
276
+ # See gh-7203
277
+ for dt in self.itype:
278
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
279
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
280
+
281
+ sample = self.rfunc(lbnd, ubnd, dtype=dt)
282
+ assert_equal(sample.dtype, np.dtype(dt))
283
+
284
+ for dt in (bool, int):
285
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
286
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
287
+
288
+ # gh-7284: Ensure that we get Python data types
289
+ sample = self.rfunc(lbnd, ubnd, dtype=dt)
290
+ assert_(not hasattr(sample, 'dtype'))
291
+ assert_equal(type(sample), dt)
292
+
293
+
294
+ class TestRandomDist:
295
+ # Make sure the random distribution returns the correct value for a
296
+ # given seed
297
+
298
+ def setup_method(self):
299
+ self.seed = 1234567890
300
+
301
+ def test_rand(self):
302
+ np.random.seed(self.seed)
303
+ actual = np.random.rand(3, 2)
304
+ desired = np.array([[0.61879477158567997, 0.59162362775974664],
305
+ [0.88868358904449662, 0.89165480011560816],
306
+ [0.4575674820298663, 0.7781880808593471]])
307
+ assert_array_almost_equal(actual, desired, decimal=15)
308
+
309
+ def test_randn(self):
310
+ np.random.seed(self.seed)
311
+ actual = np.random.randn(3, 2)
312
+ desired = np.array([[1.34016345771863121, 1.73759122771936081],
313
+ [1.498988344300628, -0.2286433324536169],
314
+ [2.031033998682787, 2.17032494605655257]])
315
+ assert_array_almost_equal(actual, desired, decimal=15)
316
+
317
+ def test_randint(self):
318
+ np.random.seed(self.seed)
319
+ actual = np.random.randint(-99, 99, size=(3, 2))
320
+ desired = np.array([[31, 3],
321
+ [-52, 41],
322
+ [-48, -66]])
323
+ assert_array_equal(actual, desired)
324
+
325
+ def test_random_integers(self):
326
+ np.random.seed(self.seed)
327
+ with suppress_warnings() as sup:
328
+ w = sup.record(DeprecationWarning)
329
+ actual = np.random.random_integers(-99, 99, size=(3, 2))
330
+ assert_(len(w) == 1)
331
+ desired = np.array([[31, 3],
332
+ [-52, 41],
333
+ [-48, -66]])
334
+ assert_array_equal(actual, desired)
335
+
336
+ def test_random_integers_max_int(self):
337
+ # Tests whether random_integers can generate the
338
+ # maximum allowed Python int that can be converted
339
+ # into a C long. Previous implementations of this
340
+ # method have thrown an OverflowError when attempting
341
+ # to generate this integer.
342
+ with suppress_warnings() as sup:
343
+ w = sup.record(DeprecationWarning)
344
+ actual = np.random.random_integers(np.iinfo('l').max,
345
+ np.iinfo('l').max)
346
+ assert_(len(w) == 1)
347
+
348
+ desired = np.iinfo('l').max
349
+ assert_equal(actual, desired)
350
+
351
+ def test_random_integers_deprecated(self):
352
+ with warnings.catch_warnings():
353
+ warnings.simplefilter("error", DeprecationWarning)
354
+
355
+ # DeprecationWarning raised with high == None
356
+ assert_raises(DeprecationWarning,
357
+ np.random.random_integers,
358
+ np.iinfo('l').max)
359
+
360
+ # DeprecationWarning raised with high != None
361
+ assert_raises(DeprecationWarning,
362
+ np.random.random_integers,
363
+ np.iinfo('l').max, np.iinfo('l').max)
364
+
365
+ def test_random(self):
366
+ np.random.seed(self.seed)
367
+ actual = np.random.random((3, 2))
368
+ desired = np.array([[0.61879477158567997, 0.59162362775974664],
369
+ [0.88868358904449662, 0.89165480011560816],
370
+ [0.4575674820298663, 0.7781880808593471]])
371
+ assert_array_almost_equal(actual, desired, decimal=15)
372
+
373
+ def test_choice_uniform_replace(self):
374
+ np.random.seed(self.seed)
375
+ actual = np.random.choice(4, 4)
376
+ desired = np.array([2, 3, 2, 3])
377
+ assert_array_equal(actual, desired)
378
+
379
+ def test_choice_nonuniform_replace(self):
380
+ np.random.seed(self.seed)
381
+ actual = np.random.choice(4, 4, p=[0.4, 0.4, 0.1, 0.1])
382
+ desired = np.array([1, 1, 2, 2])
383
+ assert_array_equal(actual, desired)
384
+
385
+ def test_choice_uniform_noreplace(self):
386
+ np.random.seed(self.seed)
387
+ actual = np.random.choice(4, 3, replace=False)
388
+ desired = np.array([0, 1, 3])
389
+ assert_array_equal(actual, desired)
390
+
391
+ def test_choice_nonuniform_noreplace(self):
392
+ np.random.seed(self.seed)
393
+ actual = np.random.choice(4, 3, replace=False,
394
+ p=[0.1, 0.3, 0.5, 0.1])
395
+ desired = np.array([2, 3, 1])
396
+ assert_array_equal(actual, desired)
397
+
398
+ def test_choice_noninteger(self):
399
+ np.random.seed(self.seed)
400
+ actual = np.random.choice(['a', 'b', 'c', 'd'], 4)
401
+ desired = np.array(['c', 'd', 'c', 'd'])
402
+ assert_array_equal(actual, desired)
403
+
404
+ def test_choice_exceptions(self):
405
+ sample = np.random.choice
406
+ assert_raises(ValueError, sample, -1, 3)
407
+ assert_raises(ValueError, sample, 3., 3)
408
+ assert_raises(ValueError, sample, [[1, 2], [3, 4]], 3)
409
+ assert_raises(ValueError, sample, [], 3)
410
+ assert_raises(ValueError, sample, [1, 2, 3, 4], 3,
411
+ p=[[0.25, 0.25], [0.25, 0.25]])
412
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4, 0.2])
413
+ assert_raises(ValueError, sample, [1, 2], 3, p=[1.1, -0.1])
414
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4])
415
+ assert_raises(ValueError, sample, [1, 2, 3], 4, replace=False)
416
+ # gh-13087
417
+ assert_raises(ValueError, sample, [1, 2, 3], -2, replace=False)
418
+ assert_raises(ValueError, sample, [1, 2, 3], (-1,), replace=False)
419
+ assert_raises(ValueError, sample, [1, 2, 3], (-1, 1), replace=False)
420
+ assert_raises(ValueError, sample, [1, 2, 3], 2,
421
+ replace=False, p=[1, 0, 0])
422
+
423
+ def test_choice_return_shape(self):
424
+ p = [0.1, 0.9]
425
+ # Check scalar
426
+ assert_(np.isscalar(np.random.choice(2, replace=True)))
427
+ assert_(np.isscalar(np.random.choice(2, replace=False)))
428
+ assert_(np.isscalar(np.random.choice(2, replace=True, p=p)))
429
+ assert_(np.isscalar(np.random.choice(2, replace=False, p=p)))
430
+ assert_(np.isscalar(np.random.choice([1, 2], replace=True)))
431
+ assert_(np.random.choice([None], replace=True) is None)
432
+ a = np.array([1, 2])
433
+ arr = np.empty(1, dtype=object)
434
+ arr[0] = a
435
+ assert_(np.random.choice(arr, replace=True) is a)
436
+
437
+ # Check 0-d array
438
+ s = tuple()
439
+ assert_(not np.isscalar(np.random.choice(2, s, replace=True)))
440
+ assert_(not np.isscalar(np.random.choice(2, s, replace=False)))
441
+ assert_(not np.isscalar(np.random.choice(2, s, replace=True, p=p)))
442
+ assert_(not np.isscalar(np.random.choice(2, s, replace=False, p=p)))
443
+ assert_(not np.isscalar(np.random.choice([1, 2], s, replace=True)))
444
+ assert_(np.random.choice([None], s, replace=True).ndim == 0)
445
+ a = np.array([1, 2])
446
+ arr = np.empty(1, dtype=object)
447
+ arr[0] = a
448
+ assert_(np.random.choice(arr, s, replace=True).item() is a)
449
+
450
+ # Check multi dimensional array
451
+ s = (2, 3)
452
+ p = [0.1, 0.1, 0.1, 0.1, 0.4, 0.2]
453
+ assert_equal(np.random.choice(6, s, replace=True).shape, s)
454
+ assert_equal(np.random.choice(6, s, replace=False).shape, s)
455
+ assert_equal(np.random.choice(6, s, replace=True, p=p).shape, s)
456
+ assert_equal(np.random.choice(6, s, replace=False, p=p).shape, s)
457
+ assert_equal(np.random.choice(np.arange(6), s, replace=True).shape, s)
458
+
459
+ # Check zero-size
460
+ assert_equal(np.random.randint(0, 0, size=(3, 0, 4)).shape, (3, 0, 4))
461
+ assert_equal(np.random.randint(0, -10, size=0).shape, (0,))
462
+ assert_equal(np.random.randint(10, 10, size=0).shape, (0,))
463
+ assert_equal(np.random.choice(0, size=0).shape, (0,))
464
+ assert_equal(np.random.choice([], size=(0,)).shape, (0,))
465
+ assert_equal(np.random.choice(['a', 'b'], size=(3, 0, 4)).shape,
466
+ (3, 0, 4))
467
+ assert_raises(ValueError, np.random.choice, [], 10)
468
+
469
+ def test_choice_nan_probabilities(self):
470
+ a = np.array([42, 1, 2])
471
+ p = [None, None, None]
472
+ assert_raises(ValueError, np.random.choice, a, p=p)
473
+
474
+ def test_bytes(self):
475
+ np.random.seed(self.seed)
476
+ actual = np.random.bytes(10)
477
+ desired = b'\x82Ui\x9e\xff\x97+Wf\xa5'
478
+ assert_equal(actual, desired)
479
+
480
+ def test_shuffle(self):
481
+ # Test lists, arrays (of various dtypes), and multidimensional versions
482
+ # of both, c-contiguous or not:
483
+ for conv in [lambda x: np.array([]),
484
+ lambda x: x,
485
+ lambda x: np.asarray(x).astype(np.int8),
486
+ lambda x: np.asarray(x).astype(np.float32),
487
+ lambda x: np.asarray(x).astype(np.complex64),
488
+ lambda x: np.asarray(x).astype(object),
489
+ lambda x: [(i, i) for i in x],
490
+ lambda x: np.asarray([[i, i] for i in x]),
491
+ lambda x: np.vstack([x, x]).T,
492
+ # gh-11442
493
+ lambda x: (np.asarray([(i, i) for i in x],
494
+ [("a", int), ("b", int)])
495
+ .view(np.recarray)),
496
+ # gh-4270
497
+ lambda x: np.asarray([(i, i) for i in x],
498
+ [("a", object), ("b", np.int32)])]:
499
+ np.random.seed(self.seed)
500
+ alist = conv([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
501
+ np.random.shuffle(alist)
502
+ actual = alist
503
+ desired = conv([0, 1, 9, 6, 2, 4, 5, 8, 7, 3])
504
+ assert_array_equal(actual, desired)
505
+
506
+ def test_shuffle_masked(self):
507
+ # gh-3263
508
+ a = np.ma.masked_values(np.reshape(range(20), (5, 4)) % 3 - 1, -1)
509
+ b = np.ma.masked_values(np.arange(20) % 3 - 1, -1)
510
+ a_orig = a.copy()
511
+ b_orig = b.copy()
512
+ for i in range(50):
513
+ np.random.shuffle(a)
514
+ assert_equal(
515
+ sorted(a.data[~a.mask]), sorted(a_orig.data[~a_orig.mask]))
516
+ np.random.shuffle(b)
517
+ assert_equal(
518
+ sorted(b.data[~b.mask]), sorted(b_orig.data[~b_orig.mask]))
519
+
520
+ @pytest.mark.parametrize("random",
521
+ [np.random, np.random.RandomState(), np.random.default_rng()])
522
+ def test_shuffle_untyped_warning(self, random):
523
+ # Create a dict works like a sequence but isn't one
524
+ values = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6}
525
+ with pytest.warns(UserWarning,
526
+ match="you are shuffling a 'dict' object") as rec:
527
+ random.shuffle(values)
528
+ assert "test_random" in rec[0].filename
529
+
530
+ @pytest.mark.parametrize("random",
531
+ [np.random, np.random.RandomState(), np.random.default_rng()])
532
+ @pytest.mark.parametrize("use_array_like", [True, False])
533
+ def test_shuffle_no_object_unpacking(self, random, use_array_like):
534
+ class MyArr(np.ndarray):
535
+ pass
536
+
537
+ items = [
538
+ None, np.array([3]), np.float64(3), np.array(10), np.float64(7)
539
+ ]
540
+ arr = np.array(items, dtype=object)
541
+ item_ids = {id(i) for i in items}
542
+ if use_array_like:
543
+ arr = arr.view(MyArr)
544
+
545
+ # The array was created fine, and did not modify any objects:
546
+ assert all(id(i) in item_ids for i in arr)
547
+
548
+ if use_array_like and not isinstance(random, np.random.Generator):
549
+ # The old API gives incorrect results, but warns about it.
550
+ with pytest.warns(UserWarning,
551
+ match="Shuffling a one dimensional array.*"):
552
+ random.shuffle(arr)
553
+ else:
554
+ random.shuffle(arr)
555
+ assert all(id(i) in item_ids for i in arr)
556
+
557
+ def test_shuffle_memoryview(self):
558
+ # gh-18273
559
+ # allow graceful handling of memoryviews
560
+ # (treat the same as arrays)
561
+ np.random.seed(self.seed)
562
+ a = np.arange(5).data
563
+ np.random.shuffle(a)
564
+ assert_equal(np.asarray(a), [0, 1, 4, 3, 2])
565
+ rng = np.random.RandomState(self.seed)
566
+ rng.shuffle(a)
567
+ assert_equal(np.asarray(a), [0, 1, 2, 3, 4])
568
+ rng = np.random.default_rng(self.seed)
569
+ rng.shuffle(a)
570
+ assert_equal(np.asarray(a), [4, 1, 0, 3, 2])
571
+
572
+ def test_shuffle_not_writeable(self):
573
+ a = np.zeros(3)
574
+ a.flags.writeable = False
575
+ with pytest.raises(ValueError, match='read-only'):
576
+ np.random.shuffle(a)
577
+
578
+ def test_beta(self):
579
+ np.random.seed(self.seed)
580
+ actual = np.random.beta(.1, .9, size=(3, 2))
581
+ desired = np.array(
582
+ [[1.45341850513746058e-02, 5.31297615662868145e-04],
583
+ [1.85366619058432324e-06, 4.19214516800110563e-03],
584
+ [1.58405155108498093e-04, 1.26252891949397652e-04]])
585
+ assert_array_almost_equal(actual, desired, decimal=15)
586
+
587
+ def test_binomial(self):
588
+ np.random.seed(self.seed)
589
+ actual = np.random.binomial(100, .456, size=(3, 2))
590
+ desired = np.array([[37, 43],
591
+ [42, 48],
592
+ [46, 45]])
593
+ assert_array_equal(actual, desired)
594
+
595
+ def test_chisquare(self):
596
+ np.random.seed(self.seed)
597
+ actual = np.random.chisquare(50, size=(3, 2))
598
+ desired = np.array([[63.87858175501090585, 68.68407748911370447],
599
+ [65.77116116901505904, 47.09686762438974483],
600
+ [72.3828403199695174, 74.18408615260374006]])
601
+ assert_array_almost_equal(actual, desired, decimal=13)
602
+
603
+ def test_dirichlet(self):
604
+ np.random.seed(self.seed)
605
+ alpha = np.array([51.72840233779265162, 39.74494232180943953])
606
+ actual = np.random.mtrand.dirichlet(alpha, size=(3, 2))
607
+ desired = np.array([[[0.54539444573611562, 0.45460555426388438],
608
+ [0.62345816822039413, 0.37654183177960598]],
609
+ [[0.55206000085785778, 0.44793999914214233],
610
+ [0.58964023305154301, 0.41035976694845688]],
611
+ [[0.59266909280647828, 0.40733090719352177],
612
+ [0.56974431743975207, 0.43025568256024799]]])
613
+ assert_array_almost_equal(actual, desired, decimal=15)
614
+
615
+ def test_dirichlet_size(self):
616
+ # gh-3173
617
+ p = np.array([51.72840233779265162, 39.74494232180943953])
618
+ assert_equal(np.random.dirichlet(p, np.uint32(1)).shape, (1, 2))
619
+ assert_equal(np.random.dirichlet(p, np.uint32(1)).shape, (1, 2))
620
+ assert_equal(np.random.dirichlet(p, np.uint32(1)).shape, (1, 2))
621
+ assert_equal(np.random.dirichlet(p, [2, 2]).shape, (2, 2, 2))
622
+ assert_equal(np.random.dirichlet(p, (2, 2)).shape, (2, 2, 2))
623
+ assert_equal(np.random.dirichlet(p, np.array((2, 2))).shape, (2, 2, 2))
624
+
625
+ assert_raises(TypeError, np.random.dirichlet, p, float(1))
626
+
627
+ def test_dirichlet_bad_alpha(self):
628
+ # gh-2089
629
+ alpha = np.array([5.4e-01, -1.0e-16])
630
+ assert_raises(ValueError, np.random.mtrand.dirichlet, alpha)
631
+
632
+ # gh-15876
633
+ assert_raises(ValueError, random.dirichlet, [[5, 1]])
634
+ assert_raises(ValueError, random.dirichlet, [[5], [1]])
635
+ assert_raises(ValueError, random.dirichlet, [[[5], [1]], [[1], [5]]])
636
+ assert_raises(ValueError, random.dirichlet, np.array([[5, 1], [1, 5]]))
637
+
638
+ def test_exponential(self):
639
+ np.random.seed(self.seed)
640
+ actual = np.random.exponential(1.1234, size=(3, 2))
641
+ desired = np.array([[1.08342649775011624, 1.00607889924557314],
642
+ [2.46628830085216721, 2.49668106809923884],
643
+ [0.68717433461363442, 1.69175666993575979]])
644
+ assert_array_almost_equal(actual, desired, decimal=15)
645
+
646
+ def test_exponential_0(self):
647
+ assert_equal(np.random.exponential(scale=0), 0)
648
+ assert_raises(ValueError, np.random.exponential, scale=-0.)
649
+
650
+ def test_f(self):
651
+ np.random.seed(self.seed)
652
+ actual = np.random.f(12, 77, size=(3, 2))
653
+ desired = np.array([[1.21975394418575878, 1.75135759791559775],
654
+ [1.44803115017146489, 1.22108959480396262],
655
+ [1.02176975757740629, 1.34431827623300415]])
656
+ assert_array_almost_equal(actual, desired, decimal=15)
657
+
658
+ def test_gamma(self):
659
+ np.random.seed(self.seed)
660
+ actual = np.random.gamma(5, 3, size=(3, 2))
661
+ desired = np.array([[24.60509188649287182, 28.54993563207210627],
662
+ [26.13476110204064184, 12.56988482927716078],
663
+ [31.71863275789960568, 33.30143302795922011]])
664
+ assert_array_almost_equal(actual, desired, decimal=14)
665
+
666
+ def test_gamma_0(self):
667
+ assert_equal(np.random.gamma(shape=0, scale=0), 0)
668
+ assert_raises(ValueError, np.random.gamma, shape=-0., scale=-0.)
669
+
670
+ def test_geometric(self):
671
+ np.random.seed(self.seed)
672
+ actual = np.random.geometric(.123456789, size=(3, 2))
673
+ desired = np.array([[8, 7],
674
+ [17, 17],
675
+ [5, 12]])
676
+ assert_array_equal(actual, desired)
677
+
678
+ def test_gumbel(self):
679
+ np.random.seed(self.seed)
680
+ actual = np.random.gumbel(loc=.123456789, scale=2.0, size=(3, 2))
681
+ desired = np.array([[0.19591898743416816, 0.34405539668096674],
682
+ [-1.4492522252274278, -1.47374816298446865],
683
+ [1.10651090478803416, -0.69535848626236174]])
684
+ assert_array_almost_equal(actual, desired, decimal=15)
685
+
686
+ def test_gumbel_0(self):
687
+ assert_equal(np.random.gumbel(scale=0), 0)
688
+ assert_raises(ValueError, np.random.gumbel, scale=-0.)
689
+
690
+ def test_hypergeometric(self):
691
+ np.random.seed(self.seed)
692
+ actual = np.random.hypergeometric(10, 5, 14, size=(3, 2))
693
+ desired = np.array([[10, 10],
694
+ [10, 10],
695
+ [9, 9]])
696
+ assert_array_equal(actual, desired)
697
+
698
+ # Test nbad = 0
699
+ actual = np.random.hypergeometric(5, 0, 3, size=4)
700
+ desired = np.array([3, 3, 3, 3])
701
+ assert_array_equal(actual, desired)
702
+
703
+ actual = np.random.hypergeometric(15, 0, 12, size=4)
704
+ desired = np.array([12, 12, 12, 12])
705
+ assert_array_equal(actual, desired)
706
+
707
+ # Test ngood = 0
708
+ actual = np.random.hypergeometric(0, 5, 3, size=4)
709
+ desired = np.array([0, 0, 0, 0])
710
+ assert_array_equal(actual, desired)
711
+
712
+ actual = np.random.hypergeometric(0, 15, 12, size=4)
713
+ desired = np.array([0, 0, 0, 0])
714
+ assert_array_equal(actual, desired)
715
+
716
+ def test_laplace(self):
717
+ np.random.seed(self.seed)
718
+ actual = np.random.laplace(loc=.123456789, scale=2.0, size=(3, 2))
719
+ desired = np.array([[0.66599721112760157, 0.52829452552221945],
720
+ [3.12791959514407125, 3.18202813572992005],
721
+ [-0.05391065675859356, 1.74901336242837324]])
722
+ assert_array_almost_equal(actual, desired, decimal=15)
723
+
724
+ def test_laplace_0(self):
725
+ assert_equal(np.random.laplace(scale=0), 0)
726
+ assert_raises(ValueError, np.random.laplace, scale=-0.)
727
+
728
+ def test_logistic(self):
729
+ np.random.seed(self.seed)
730
+ actual = np.random.logistic(loc=.123456789, scale=2.0, size=(3, 2))
731
+ desired = np.array([[1.09232835305011444, 0.8648196662399954],
732
+ [4.27818590694950185, 4.33897006346929714],
733
+ [-0.21682183359214885, 2.63373365386060332]])
734
+ assert_array_almost_equal(actual, desired, decimal=15)
735
+
736
+ def test_lognormal(self):
737
+ np.random.seed(self.seed)
738
+ actual = np.random.lognormal(mean=.123456789, sigma=2.0, size=(3, 2))
739
+ desired = np.array([[16.50698631688883822, 36.54846706092654784],
740
+ [22.67886599981281748, 0.71617561058995771],
741
+ [65.72798501792723869, 86.84341601437161273]])
742
+ assert_array_almost_equal(actual, desired, decimal=13)
743
+
744
+ def test_lognormal_0(self):
745
+ assert_equal(np.random.lognormal(sigma=0), 1)
746
+ assert_raises(ValueError, np.random.lognormal, sigma=-0.)
747
+
748
+ def test_logseries(self):
749
+ np.random.seed(self.seed)
750
+ actual = np.random.logseries(p=.923456789, size=(3, 2))
751
+ desired = np.array([[2, 2],
752
+ [6, 17],
753
+ [3, 6]])
754
+ assert_array_equal(actual, desired)
755
+
756
+ def test_multinomial(self):
757
+ np.random.seed(self.seed)
758
+ actual = np.random.multinomial(20, [1/6.]*6, size=(3, 2))
759
+ desired = np.array([[[4, 3, 5, 4, 2, 2],
760
+ [5, 2, 8, 2, 2, 1]],
761
+ [[3, 4, 3, 6, 0, 4],
762
+ [2, 1, 4, 3, 6, 4]],
763
+ [[4, 4, 2, 5, 2, 3],
764
+ [4, 3, 4, 2, 3, 4]]])
765
+ assert_array_equal(actual, desired)
766
+
767
+ def test_multivariate_normal(self):
768
+ np.random.seed(self.seed)
769
+ mean = (.123456789, 10)
770
+ cov = [[1, 0], [0, 1]]
771
+ size = (3, 2)
772
+ actual = np.random.multivariate_normal(mean, cov, size)
773
+ desired = np.array([[[1.463620246718631, 11.73759122771936],
774
+ [1.622445133300628, 9.771356667546383]],
775
+ [[2.154490787682787, 12.170324946056553],
776
+ [1.719909438201865, 9.230548443648306]],
777
+ [[0.689515026297799, 9.880729819607714],
778
+ [-0.023054015651998, 9.201096623542879]]])
779
+
780
+ assert_array_almost_equal(actual, desired, decimal=15)
781
+
782
+ # Check for default size, was raising deprecation warning
783
+ actual = np.random.multivariate_normal(mean, cov)
784
+ desired = np.array([0.895289569463708, 9.17180864067987])
785
+ assert_array_almost_equal(actual, desired, decimal=15)
786
+
787
+ # Check that non positive-semidefinite covariance warns with
788
+ # RuntimeWarning
789
+ mean = [0, 0]
790
+ cov = [[1, 2], [2, 1]]
791
+ assert_warns(RuntimeWarning, np.random.multivariate_normal, mean, cov)
792
+
793
+ # and that it doesn't warn with RuntimeWarning check_valid='ignore'
794
+ assert_no_warnings(np.random.multivariate_normal, mean, cov,
795
+ check_valid='ignore')
796
+
797
+ # and that it raises with RuntimeWarning check_valid='raises'
798
+ assert_raises(ValueError, np.random.multivariate_normal, mean, cov,
799
+ check_valid='raise')
800
+
801
+ cov = np.array([[1, 0.1], [0.1, 1]], dtype=np.float32)
802
+ with suppress_warnings() as sup:
803
+ np.random.multivariate_normal(mean, cov)
804
+ w = sup.record(RuntimeWarning)
805
+ assert len(w) == 0
806
+
807
+ def test_negative_binomial(self):
808
+ np.random.seed(self.seed)
809
+ actual = np.random.negative_binomial(n=100, p=.12345, size=(3, 2))
810
+ desired = np.array([[848, 841],
811
+ [892, 611],
812
+ [779, 647]])
813
+ assert_array_equal(actual, desired)
814
+
815
+ def test_noncentral_chisquare(self):
816
+ np.random.seed(self.seed)
817
+ actual = np.random.noncentral_chisquare(df=5, nonc=5, size=(3, 2))
818
+ desired = np.array([[23.91905354498517511, 13.35324692733826346],
819
+ [31.22452661329736401, 16.60047399466177254],
820
+ [5.03461598262724586, 17.94973089023519464]])
821
+ assert_array_almost_equal(actual, desired, decimal=14)
822
+
823
+ actual = np.random.noncentral_chisquare(df=.5, nonc=.2, size=(3, 2))
824
+ desired = np.array([[1.47145377828516666, 0.15052899268012659],
825
+ [0.00943803056963588, 1.02647251615666169],
826
+ [0.332334982684171, 0.15451287602753125]])
827
+ assert_array_almost_equal(actual, desired, decimal=14)
828
+
829
+ np.random.seed(self.seed)
830
+ actual = np.random.noncentral_chisquare(df=5, nonc=0, size=(3, 2))
831
+ desired = np.array([[9.597154162763948, 11.725484450296079],
832
+ [10.413711048138335, 3.694475922923986],
833
+ [13.484222138963087, 14.377255424602957]])
834
+ assert_array_almost_equal(actual, desired, decimal=14)
835
+
836
+ def test_noncentral_f(self):
837
+ np.random.seed(self.seed)
838
+ actual = np.random.noncentral_f(dfnum=5, dfden=2, nonc=1,
839
+ size=(3, 2))
840
+ desired = np.array([[1.40598099674926669, 0.34207973179285761],
841
+ [3.57715069265772545, 7.92632662577829805],
842
+ [0.43741599463544162, 1.1774208752428319]])
843
+ assert_array_almost_equal(actual, desired, decimal=14)
844
+
845
+ def test_normal(self):
846
+ np.random.seed(self.seed)
847
+ actual = np.random.normal(loc=.123456789, scale=2.0, size=(3, 2))
848
+ desired = np.array([[2.80378370443726244, 3.59863924443872163],
849
+ [3.121433477601256, -0.33382987590723379],
850
+ [4.18552478636557357, 4.46410668111310471]])
851
+ assert_array_almost_equal(actual, desired, decimal=15)
852
+
853
+ def test_normal_0(self):
854
+ assert_equal(np.random.normal(scale=0), 0)
855
+ assert_raises(ValueError, np.random.normal, scale=-0.)
856
+
857
+ def test_pareto(self):
858
+ np.random.seed(self.seed)
859
+ actual = np.random.pareto(a=.123456789, size=(3, 2))
860
+ desired = np.array(
861
+ [[2.46852460439034849e+03, 1.41286880810518346e+03],
862
+ [5.28287797029485181e+07, 6.57720981047328785e+07],
863
+ [1.40840323350391515e+02, 1.98390255135251704e+05]])
864
+ # For some reason on 32-bit x86 Ubuntu 12.10 the [1, 0] entry in this
865
+ # matrix differs by 24 nulps. Discussion:
866
+ # https://mail.python.org/pipermail/numpy-discussion/2012-September/063801.html
867
+ # Consensus is that this is probably some gcc quirk that affects
868
+ # rounding but not in any important way, so we just use a looser
869
+ # tolerance on this test:
870
+ np.testing.assert_array_almost_equal_nulp(actual, desired, nulp=30)
871
+
872
+ def test_poisson(self):
873
+ np.random.seed(self.seed)
874
+ actual = np.random.poisson(lam=.123456789, size=(3, 2))
875
+ desired = np.array([[0, 0],
876
+ [1, 0],
877
+ [0, 0]])
878
+ assert_array_equal(actual, desired)
879
+
880
+ def test_poisson_exceptions(self):
881
+ lambig = np.iinfo('l').max
882
+ lamneg = -1
883
+ assert_raises(ValueError, np.random.poisson, lamneg)
884
+ assert_raises(ValueError, np.random.poisson, [lamneg]*10)
885
+ assert_raises(ValueError, np.random.poisson, lambig)
886
+ assert_raises(ValueError, np.random.poisson, [lambig]*10)
887
+
888
+ def test_power(self):
889
+ np.random.seed(self.seed)
890
+ actual = np.random.power(a=.123456789, size=(3, 2))
891
+ desired = np.array([[0.02048932883240791, 0.01424192241128213],
892
+ [0.38446073748535298, 0.39499689943484395],
893
+ [0.00177699707563439, 0.13115505880863756]])
894
+ assert_array_almost_equal(actual, desired, decimal=15)
895
+
896
+ def test_rayleigh(self):
897
+ np.random.seed(self.seed)
898
+ actual = np.random.rayleigh(scale=10, size=(3, 2))
899
+ desired = np.array([[13.8882496494248393, 13.383318339044731],
900
+ [20.95413364294492098, 21.08285015800712614],
901
+ [11.06066537006854311, 17.35468505778271009]])
902
+ assert_array_almost_equal(actual, desired, decimal=14)
903
+
904
+ def test_rayleigh_0(self):
905
+ assert_equal(np.random.rayleigh(scale=0), 0)
906
+ assert_raises(ValueError, np.random.rayleigh, scale=-0.)
907
+
908
+ def test_standard_cauchy(self):
909
+ np.random.seed(self.seed)
910
+ actual = np.random.standard_cauchy(size=(3, 2))
911
+ desired = np.array([[0.77127660196445336, -6.55601161955910605],
912
+ [0.93582023391158309, -2.07479293013759447],
913
+ [-4.74601644297011926, 0.18338989290760804]])
914
+ assert_array_almost_equal(actual, desired, decimal=15)
915
+
916
+ def test_standard_exponential(self):
917
+ np.random.seed(self.seed)
918
+ actual = np.random.standard_exponential(size=(3, 2))
919
+ desired = np.array([[0.96441739162374596, 0.89556604882105506],
920
+ [2.1953785836319808, 2.22243285392490542],
921
+ [0.6116915921431676, 1.50592546727413201]])
922
+ assert_array_almost_equal(actual, desired, decimal=15)
923
+
924
+ def test_standard_gamma(self):
925
+ np.random.seed(self.seed)
926
+ actual = np.random.standard_gamma(shape=3, size=(3, 2))
927
+ desired = np.array([[5.50841531318455058, 6.62953470301903103],
928
+ [5.93988484943779227, 2.31044849402133989],
929
+ [7.54838614231317084, 8.012756093271868]])
930
+ assert_array_almost_equal(actual, desired, decimal=14)
931
+
932
+ def test_standard_gamma_0(self):
933
+ assert_equal(np.random.standard_gamma(shape=0), 0)
934
+ assert_raises(ValueError, np.random.standard_gamma, shape=-0.)
935
+
936
+ def test_standard_normal(self):
937
+ np.random.seed(self.seed)
938
+ actual = np.random.standard_normal(size=(3, 2))
939
+ desired = np.array([[1.34016345771863121, 1.73759122771936081],
940
+ [1.498988344300628, -0.2286433324536169],
941
+ [2.031033998682787, 2.17032494605655257]])
942
+ assert_array_almost_equal(actual, desired, decimal=15)
943
+
944
+ def test_standard_t(self):
945
+ np.random.seed(self.seed)
946
+ actual = np.random.standard_t(df=10, size=(3, 2))
947
+ desired = np.array([[0.97140611862659965, -0.08830486548450577],
948
+ [1.36311143689505321, -0.55317463909867071],
949
+ [-0.18473749069684214, 0.61181537341755321]])
950
+ assert_array_almost_equal(actual, desired, decimal=15)
951
+
952
+ def test_triangular(self):
953
+ np.random.seed(self.seed)
954
+ actual = np.random.triangular(left=5.12, mode=10.23, right=20.34,
955
+ size=(3, 2))
956
+ desired = np.array([[12.68117178949215784, 12.4129206149193152],
957
+ [16.20131377335158263, 16.25692138747600524],
958
+ [11.20400690911820263, 14.4978144835829923]])
959
+ assert_array_almost_equal(actual, desired, decimal=14)
960
+
961
+ def test_uniform(self):
962
+ np.random.seed(self.seed)
963
+ actual = np.random.uniform(low=1.23, high=10.54, size=(3, 2))
964
+ desired = np.array([[6.99097932346268003, 6.73801597444323974],
965
+ [9.50364421400426274, 9.53130618907631089],
966
+ [5.48995325769805476, 8.47493103280052118]])
967
+ assert_array_almost_equal(actual, desired, decimal=15)
968
+
969
+ def test_uniform_range_bounds(self):
970
+ fmin = np.finfo('float').min
971
+ fmax = np.finfo('float').max
972
+
973
+ func = np.random.uniform
974
+ assert_raises(OverflowError, func, -np.inf, 0)
975
+ assert_raises(OverflowError, func, 0, np.inf)
976
+ assert_raises(OverflowError, func, fmin, fmax)
977
+ assert_raises(OverflowError, func, [-np.inf], [0])
978
+ assert_raises(OverflowError, func, [0], [np.inf])
979
+
980
+ # (fmax / 1e17) - fmin is within range, so this should not throw
981
+ # account for i386 extended precision DBL_MAX / 1e17 + DBL_MAX >
982
+ # DBL_MAX by increasing fmin a bit
983
+ np.random.uniform(low=np.nextafter(fmin, 1), high=fmax / 1e17)
984
+
985
+ def test_scalar_exception_propagation(self):
986
+ # Tests that exceptions are correctly propagated in distributions
987
+ # when called with objects that throw exceptions when converted to
988
+ # scalars.
989
+ #
990
+ # Regression test for gh: 8865
991
+
992
+ class ThrowingFloat(np.ndarray):
993
+ def __float__(self):
994
+ raise TypeError
995
+
996
+ throwing_float = np.array(1.0).view(ThrowingFloat)
997
+ assert_raises(TypeError, np.random.uniform, throwing_float,
998
+ throwing_float)
999
+
1000
+ class ThrowingInteger(np.ndarray):
1001
+ def __int__(self):
1002
+ raise TypeError
1003
+
1004
+ __index__ = __int__
1005
+
1006
+ throwing_int = np.array(1).view(ThrowingInteger)
1007
+ assert_raises(TypeError, np.random.hypergeometric, throwing_int, 1, 1)
1008
+
1009
+ def test_vonmises(self):
1010
+ np.random.seed(self.seed)
1011
+ actual = np.random.vonmises(mu=1.23, kappa=1.54, size=(3, 2))
1012
+ desired = np.array([[2.28567572673902042, 2.89163838442285037],
1013
+ [0.38198375564286025, 2.57638023113890746],
1014
+ [1.19153771588353052, 1.83509849681825354]])
1015
+ assert_array_almost_equal(actual, desired, decimal=15)
1016
+
1017
+ def test_vonmises_small(self):
1018
+ # check infinite loop, gh-4720
1019
+ np.random.seed(self.seed)
1020
+ r = np.random.vonmises(mu=0., kappa=1.1e-8, size=10**6)
1021
+ np.testing.assert_(np.isfinite(r).all())
1022
+
1023
+ def test_wald(self):
1024
+ np.random.seed(self.seed)
1025
+ actual = np.random.wald(mean=1.23, scale=1.54, size=(3, 2))
1026
+ desired = np.array([[3.82935265715889983, 5.13125249184285526],
1027
+ [0.35045403618358717, 1.50832396872003538],
1028
+ [0.24124319895843183, 0.22031101461955038]])
1029
+ assert_array_almost_equal(actual, desired, decimal=14)
1030
+
1031
+ def test_weibull(self):
1032
+ np.random.seed(self.seed)
1033
+ actual = np.random.weibull(a=1.23, size=(3, 2))
1034
+ desired = np.array([[0.97097342648766727, 0.91422896443565516],
1035
+ [1.89517770034962929, 1.91414357960479564],
1036
+ [0.67057783752390987, 1.39494046635066793]])
1037
+ assert_array_almost_equal(actual, desired, decimal=15)
1038
+
1039
+ def test_weibull_0(self):
1040
+ np.random.seed(self.seed)
1041
+ assert_equal(np.random.weibull(a=0, size=12), np.zeros(12))
1042
+ assert_raises(ValueError, np.random.weibull, a=-0.)
1043
+
1044
+ def test_zipf(self):
1045
+ np.random.seed(self.seed)
1046
+ actual = np.random.zipf(a=1.23, size=(3, 2))
1047
+ desired = np.array([[66, 29],
1048
+ [1, 1],
1049
+ [3, 13]])
1050
+ assert_array_equal(actual, desired)
1051
+
1052
+
1053
+ class TestBroadcast:
1054
+ # tests that functions that broadcast behave
1055
+ # correctly when presented with non-scalar arguments
1056
+ def setup_method(self):
1057
+ self.seed = 123456789
1058
+
1059
+ def setSeed(self):
1060
+ np.random.seed(self.seed)
1061
+
1062
+ # TODO: Include test for randint once it can broadcast
1063
+ # Can steal the test written in PR #6938
1064
+
1065
+ def test_uniform(self):
1066
+ low = [0]
1067
+ high = [1]
1068
+ uniform = np.random.uniform
1069
+ desired = np.array([0.53283302478975902,
1070
+ 0.53413660089041659,
1071
+ 0.50955303552646702])
1072
+
1073
+ self.setSeed()
1074
+ actual = uniform(low * 3, high)
1075
+ assert_array_almost_equal(actual, desired, decimal=14)
1076
+
1077
+ self.setSeed()
1078
+ actual = uniform(low, high * 3)
1079
+ assert_array_almost_equal(actual, desired, decimal=14)
1080
+
1081
+ def test_normal(self):
1082
+ loc = [0]
1083
+ scale = [1]
1084
+ bad_scale = [-1]
1085
+ normal = np.random.normal
1086
+ desired = np.array([2.2129019979039612,
1087
+ 2.1283977976520019,
1088
+ 1.8417114045748335])
1089
+
1090
+ self.setSeed()
1091
+ actual = normal(loc * 3, scale)
1092
+ assert_array_almost_equal(actual, desired, decimal=14)
1093
+ assert_raises(ValueError, normal, loc * 3, bad_scale)
1094
+
1095
+ self.setSeed()
1096
+ actual = normal(loc, scale * 3)
1097
+ assert_array_almost_equal(actual, desired, decimal=14)
1098
+ assert_raises(ValueError, normal, loc, bad_scale * 3)
1099
+
1100
+ def test_beta(self):
1101
+ a = [1]
1102
+ b = [2]
1103
+ bad_a = [-1]
1104
+ bad_b = [-2]
1105
+ beta = np.random.beta
1106
+ desired = np.array([0.19843558305989056,
1107
+ 0.075230336409423643,
1108
+ 0.24976865978980844])
1109
+
1110
+ self.setSeed()
1111
+ actual = beta(a * 3, b)
1112
+ assert_array_almost_equal(actual, desired, decimal=14)
1113
+ assert_raises(ValueError, beta, bad_a * 3, b)
1114
+ assert_raises(ValueError, beta, a * 3, bad_b)
1115
+
1116
+ self.setSeed()
1117
+ actual = beta(a, b * 3)
1118
+ assert_array_almost_equal(actual, desired, decimal=14)
1119
+ assert_raises(ValueError, beta, bad_a, b * 3)
1120
+ assert_raises(ValueError, beta, a, bad_b * 3)
1121
+
1122
+ def test_exponential(self):
1123
+ scale = [1]
1124
+ bad_scale = [-1]
1125
+ exponential = np.random.exponential
1126
+ desired = np.array([0.76106853658845242,
1127
+ 0.76386282278691653,
1128
+ 0.71243813125891797])
1129
+
1130
+ self.setSeed()
1131
+ actual = exponential(scale * 3)
1132
+ assert_array_almost_equal(actual, desired, decimal=14)
1133
+ assert_raises(ValueError, exponential, bad_scale * 3)
1134
+
1135
+ def test_standard_gamma(self):
1136
+ shape = [1]
1137
+ bad_shape = [-1]
1138
+ std_gamma = np.random.standard_gamma
1139
+ desired = np.array([0.76106853658845242,
1140
+ 0.76386282278691653,
1141
+ 0.71243813125891797])
1142
+
1143
+ self.setSeed()
1144
+ actual = std_gamma(shape * 3)
1145
+ assert_array_almost_equal(actual, desired, decimal=14)
1146
+ assert_raises(ValueError, std_gamma, bad_shape * 3)
1147
+
1148
+ def test_gamma(self):
1149
+ shape = [1]
1150
+ scale = [2]
1151
+ bad_shape = [-1]
1152
+ bad_scale = [-2]
1153
+ gamma = np.random.gamma
1154
+ desired = np.array([1.5221370731769048,
1155
+ 1.5277256455738331,
1156
+ 1.4248762625178359])
1157
+
1158
+ self.setSeed()
1159
+ actual = gamma(shape * 3, scale)
1160
+ assert_array_almost_equal(actual, desired, decimal=14)
1161
+ assert_raises(ValueError, gamma, bad_shape * 3, scale)
1162
+ assert_raises(ValueError, gamma, shape * 3, bad_scale)
1163
+
1164
+ self.setSeed()
1165
+ actual = gamma(shape, scale * 3)
1166
+ assert_array_almost_equal(actual, desired, decimal=14)
1167
+ assert_raises(ValueError, gamma, bad_shape, scale * 3)
1168
+ assert_raises(ValueError, gamma, shape, bad_scale * 3)
1169
+
1170
+ def test_f(self):
1171
+ dfnum = [1]
1172
+ dfden = [2]
1173
+ bad_dfnum = [-1]
1174
+ bad_dfden = [-2]
1175
+ f = np.random.f
1176
+ desired = np.array([0.80038951638264799,
1177
+ 0.86768719635363512,
1178
+ 2.7251095168386801])
1179
+
1180
+ self.setSeed()
1181
+ actual = f(dfnum * 3, dfden)
1182
+ assert_array_almost_equal(actual, desired, decimal=14)
1183
+ assert_raises(ValueError, f, bad_dfnum * 3, dfden)
1184
+ assert_raises(ValueError, f, dfnum * 3, bad_dfden)
1185
+
1186
+ self.setSeed()
1187
+ actual = f(dfnum, dfden * 3)
1188
+ assert_array_almost_equal(actual, desired, decimal=14)
1189
+ assert_raises(ValueError, f, bad_dfnum, dfden * 3)
1190
+ assert_raises(ValueError, f, dfnum, bad_dfden * 3)
1191
+
1192
+ def test_noncentral_f(self):
1193
+ dfnum = [2]
1194
+ dfden = [3]
1195
+ nonc = [4]
1196
+ bad_dfnum = [0]
1197
+ bad_dfden = [-1]
1198
+ bad_nonc = [-2]
1199
+ nonc_f = np.random.noncentral_f
1200
+ desired = np.array([9.1393943263705211,
1201
+ 13.025456344595602,
1202
+ 8.8018098359100545])
1203
+
1204
+ self.setSeed()
1205
+ actual = nonc_f(dfnum * 3, dfden, nonc)
1206
+ assert_array_almost_equal(actual, desired, decimal=14)
1207
+ assert_raises(ValueError, nonc_f, bad_dfnum * 3, dfden, nonc)
1208
+ assert_raises(ValueError, nonc_f, dfnum * 3, bad_dfden, nonc)
1209
+ assert_raises(ValueError, nonc_f, dfnum * 3, dfden, bad_nonc)
1210
+
1211
+ self.setSeed()
1212
+ actual = nonc_f(dfnum, dfden * 3, nonc)
1213
+ assert_array_almost_equal(actual, desired, decimal=14)
1214
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden * 3, nonc)
1215
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden * 3, nonc)
1216
+ assert_raises(ValueError, nonc_f, dfnum, dfden * 3, bad_nonc)
1217
+
1218
+ self.setSeed()
1219
+ actual = nonc_f(dfnum, dfden, nonc * 3)
1220
+ assert_array_almost_equal(actual, desired, decimal=14)
1221
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden, nonc * 3)
1222
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden, nonc * 3)
1223
+ assert_raises(ValueError, nonc_f, dfnum, dfden, bad_nonc * 3)
1224
+
1225
+ def test_noncentral_f_small_df(self):
1226
+ self.setSeed()
1227
+ desired = np.array([6.869638627492048, 0.785880199263955])
1228
+ actual = np.random.noncentral_f(0.9, 0.9, 2, size=2)
1229
+ assert_array_almost_equal(actual, desired, decimal=14)
1230
+
1231
+ def test_chisquare(self):
1232
+ df = [1]
1233
+ bad_df = [-1]
1234
+ chisquare = np.random.chisquare
1235
+ desired = np.array([0.57022801133088286,
1236
+ 0.51947702108840776,
1237
+ 0.1320969254923558])
1238
+
1239
+ self.setSeed()
1240
+ actual = chisquare(df * 3)
1241
+ assert_array_almost_equal(actual, desired, decimal=14)
1242
+ assert_raises(ValueError, chisquare, bad_df * 3)
1243
+
1244
+ def test_noncentral_chisquare(self):
1245
+ df = [1]
1246
+ nonc = [2]
1247
+ bad_df = [-1]
1248
+ bad_nonc = [-2]
1249
+ nonc_chi = np.random.noncentral_chisquare
1250
+ desired = np.array([9.0015599467913763,
1251
+ 4.5804135049718742,
1252
+ 6.0872302432834564])
1253
+
1254
+ self.setSeed()
1255
+ actual = nonc_chi(df * 3, nonc)
1256
+ assert_array_almost_equal(actual, desired, decimal=14)
1257
+ assert_raises(ValueError, nonc_chi, bad_df * 3, nonc)
1258
+ assert_raises(ValueError, nonc_chi, df * 3, bad_nonc)
1259
+
1260
+ self.setSeed()
1261
+ actual = nonc_chi(df, nonc * 3)
1262
+ assert_array_almost_equal(actual, desired, decimal=14)
1263
+ assert_raises(ValueError, nonc_chi, bad_df, nonc * 3)
1264
+ assert_raises(ValueError, nonc_chi, df, bad_nonc * 3)
1265
+
1266
+ def test_standard_t(self):
1267
+ df = [1]
1268
+ bad_df = [-1]
1269
+ t = np.random.standard_t
1270
+ desired = np.array([3.0702872575217643,
1271
+ 5.8560725167361607,
1272
+ 1.0274791436474273])
1273
+
1274
+ self.setSeed()
1275
+ actual = t(df * 3)
1276
+ assert_array_almost_equal(actual, desired, decimal=14)
1277
+ assert_raises(ValueError, t, bad_df * 3)
1278
+
1279
+ def test_vonmises(self):
1280
+ mu = [2]
1281
+ kappa = [1]
1282
+ bad_kappa = [-1]
1283
+ vonmises = np.random.vonmises
1284
+ desired = np.array([2.9883443664201312,
1285
+ -2.7064099483995943,
1286
+ -1.8672476700665914])
1287
+
1288
+ self.setSeed()
1289
+ actual = vonmises(mu * 3, kappa)
1290
+ assert_array_almost_equal(actual, desired, decimal=14)
1291
+ assert_raises(ValueError, vonmises, mu * 3, bad_kappa)
1292
+
1293
+ self.setSeed()
1294
+ actual = vonmises(mu, kappa * 3)
1295
+ assert_array_almost_equal(actual, desired, decimal=14)
1296
+ assert_raises(ValueError, vonmises, mu, bad_kappa * 3)
1297
+
1298
+ def test_pareto(self):
1299
+ a = [1]
1300
+ bad_a = [-1]
1301
+ pareto = np.random.pareto
1302
+ desired = np.array([1.1405622680198362,
1303
+ 1.1465519762044529,
1304
+ 1.0389564467453547])
1305
+
1306
+ self.setSeed()
1307
+ actual = pareto(a * 3)
1308
+ assert_array_almost_equal(actual, desired, decimal=14)
1309
+ assert_raises(ValueError, pareto, bad_a * 3)
1310
+
1311
+ def test_weibull(self):
1312
+ a = [1]
1313
+ bad_a = [-1]
1314
+ weibull = np.random.weibull
1315
+ desired = np.array([0.76106853658845242,
1316
+ 0.76386282278691653,
1317
+ 0.71243813125891797])
1318
+
1319
+ self.setSeed()
1320
+ actual = weibull(a * 3)
1321
+ assert_array_almost_equal(actual, desired, decimal=14)
1322
+ assert_raises(ValueError, weibull, bad_a * 3)
1323
+
1324
+ def test_power(self):
1325
+ a = [1]
1326
+ bad_a = [-1]
1327
+ power = np.random.power
1328
+ desired = np.array([0.53283302478975902,
1329
+ 0.53413660089041659,
1330
+ 0.50955303552646702])
1331
+
1332
+ self.setSeed()
1333
+ actual = power(a * 3)
1334
+ assert_array_almost_equal(actual, desired, decimal=14)
1335
+ assert_raises(ValueError, power, bad_a * 3)
1336
+
1337
+ def test_laplace(self):
1338
+ loc = [0]
1339
+ scale = [1]
1340
+ bad_scale = [-1]
1341
+ laplace = np.random.laplace
1342
+ desired = np.array([0.067921356028507157,
1343
+ 0.070715642226971326,
1344
+ 0.019290950698972624])
1345
+
1346
+ self.setSeed()
1347
+ actual = laplace(loc * 3, scale)
1348
+ assert_array_almost_equal(actual, desired, decimal=14)
1349
+ assert_raises(ValueError, laplace, loc * 3, bad_scale)
1350
+
1351
+ self.setSeed()
1352
+ actual = laplace(loc, scale * 3)
1353
+ assert_array_almost_equal(actual, desired, decimal=14)
1354
+ assert_raises(ValueError, laplace, loc, bad_scale * 3)
1355
+
1356
+ def test_gumbel(self):
1357
+ loc = [0]
1358
+ scale = [1]
1359
+ bad_scale = [-1]
1360
+ gumbel = np.random.gumbel
1361
+ desired = np.array([0.2730318639556768,
1362
+ 0.26936705726291116,
1363
+ 0.33906220393037939])
1364
+
1365
+ self.setSeed()
1366
+ actual = gumbel(loc * 3, scale)
1367
+ assert_array_almost_equal(actual, desired, decimal=14)
1368
+ assert_raises(ValueError, gumbel, loc * 3, bad_scale)
1369
+
1370
+ self.setSeed()
1371
+ actual = gumbel(loc, scale * 3)
1372
+ assert_array_almost_equal(actual, desired, decimal=14)
1373
+ assert_raises(ValueError, gumbel, loc, bad_scale * 3)
1374
+
1375
+ def test_logistic(self):
1376
+ loc = [0]
1377
+ scale = [1]
1378
+ bad_scale = [-1]
1379
+ logistic = np.random.logistic
1380
+ desired = np.array([0.13152135837586171,
1381
+ 0.13675915696285773,
1382
+ 0.038216792802833396])
1383
+
1384
+ self.setSeed()
1385
+ actual = logistic(loc * 3, scale)
1386
+ assert_array_almost_equal(actual, desired, decimal=14)
1387
+ assert_raises(ValueError, logistic, loc * 3, bad_scale)
1388
+
1389
+ self.setSeed()
1390
+ actual = logistic(loc, scale * 3)
1391
+ assert_array_almost_equal(actual, desired, decimal=14)
1392
+ assert_raises(ValueError, logistic, loc, bad_scale * 3)
1393
+
1394
+ def test_lognormal(self):
1395
+ mean = [0]
1396
+ sigma = [1]
1397
+ bad_sigma = [-1]
1398
+ lognormal = np.random.lognormal
1399
+ desired = np.array([9.1422086044848427,
1400
+ 8.4013952870126261,
1401
+ 6.3073234116578671])
1402
+
1403
+ self.setSeed()
1404
+ actual = lognormal(mean * 3, sigma)
1405
+ assert_array_almost_equal(actual, desired, decimal=14)
1406
+ assert_raises(ValueError, lognormal, mean * 3, bad_sigma)
1407
+
1408
+ self.setSeed()
1409
+ actual = lognormal(mean, sigma * 3)
1410
+ assert_array_almost_equal(actual, desired, decimal=14)
1411
+ assert_raises(ValueError, lognormal, mean, bad_sigma * 3)
1412
+
1413
+ def test_rayleigh(self):
1414
+ scale = [1]
1415
+ bad_scale = [-1]
1416
+ rayleigh = np.random.rayleigh
1417
+ desired = np.array([1.2337491937897689,
1418
+ 1.2360119924878694,
1419
+ 1.1936818095781789])
1420
+
1421
+ self.setSeed()
1422
+ actual = rayleigh(scale * 3)
1423
+ assert_array_almost_equal(actual, desired, decimal=14)
1424
+ assert_raises(ValueError, rayleigh, bad_scale * 3)
1425
+
1426
+ def test_wald(self):
1427
+ mean = [0.5]
1428
+ scale = [1]
1429
+ bad_mean = [0]
1430
+ bad_scale = [-2]
1431
+ wald = np.random.wald
1432
+ desired = np.array([0.11873681120271318,
1433
+ 0.12450084820795027,
1434
+ 0.9096122728408238])
1435
+
1436
+ self.setSeed()
1437
+ actual = wald(mean * 3, scale)
1438
+ assert_array_almost_equal(actual, desired, decimal=14)
1439
+ assert_raises(ValueError, wald, bad_mean * 3, scale)
1440
+ assert_raises(ValueError, wald, mean * 3, bad_scale)
1441
+
1442
+ self.setSeed()
1443
+ actual = wald(mean, scale * 3)
1444
+ assert_array_almost_equal(actual, desired, decimal=14)
1445
+ assert_raises(ValueError, wald, bad_mean, scale * 3)
1446
+ assert_raises(ValueError, wald, mean, bad_scale * 3)
1447
+ assert_raises(ValueError, wald, 0.0, 1)
1448
+ assert_raises(ValueError, wald, 0.5, 0.0)
1449
+
1450
+ def test_triangular(self):
1451
+ left = [1]
1452
+ right = [3]
1453
+ mode = [2]
1454
+ bad_left_one = [3]
1455
+ bad_mode_one = [4]
1456
+ bad_left_two, bad_mode_two = right * 2
1457
+ triangular = np.random.triangular
1458
+ desired = np.array([2.03339048710429,
1459
+ 2.0347400359389356,
1460
+ 2.0095991069536208])
1461
+
1462
+ self.setSeed()
1463
+ actual = triangular(left * 3, mode, right)
1464
+ assert_array_almost_equal(actual, desired, decimal=14)
1465
+ assert_raises(ValueError, triangular, bad_left_one * 3, mode, right)
1466
+ assert_raises(ValueError, triangular, left * 3, bad_mode_one, right)
1467
+ assert_raises(ValueError, triangular, bad_left_two * 3, bad_mode_two,
1468
+ right)
1469
+
1470
+ self.setSeed()
1471
+ actual = triangular(left, mode * 3, right)
1472
+ assert_array_almost_equal(actual, desired, decimal=14)
1473
+ assert_raises(ValueError, triangular, bad_left_one, mode * 3, right)
1474
+ assert_raises(ValueError, triangular, left, bad_mode_one * 3, right)
1475
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two * 3,
1476
+ right)
1477
+
1478
+ self.setSeed()
1479
+ actual = triangular(left, mode, right * 3)
1480
+ assert_array_almost_equal(actual, desired, decimal=14)
1481
+ assert_raises(ValueError, triangular, bad_left_one, mode, right * 3)
1482
+ assert_raises(ValueError, triangular, left, bad_mode_one, right * 3)
1483
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two,
1484
+ right * 3)
1485
+
1486
+ def test_binomial(self):
1487
+ n = [1]
1488
+ p = [0.5]
1489
+ bad_n = [-1]
1490
+ bad_p_one = [-1]
1491
+ bad_p_two = [1.5]
1492
+ binom = np.random.binomial
1493
+ desired = np.array([1, 1, 1])
1494
+
1495
+ self.setSeed()
1496
+ actual = binom(n * 3, p)
1497
+ assert_array_equal(actual, desired)
1498
+ assert_raises(ValueError, binom, bad_n * 3, p)
1499
+ assert_raises(ValueError, binom, n * 3, bad_p_one)
1500
+ assert_raises(ValueError, binom, n * 3, bad_p_two)
1501
+
1502
+ self.setSeed()
1503
+ actual = binom(n, p * 3)
1504
+ assert_array_equal(actual, desired)
1505
+ assert_raises(ValueError, binom, bad_n, p * 3)
1506
+ assert_raises(ValueError, binom, n, bad_p_one * 3)
1507
+ assert_raises(ValueError, binom, n, bad_p_two * 3)
1508
+
1509
+ def test_negative_binomial(self):
1510
+ n = [1]
1511
+ p = [0.5]
1512
+ bad_n = [-1]
1513
+ bad_p_one = [-1]
1514
+ bad_p_two = [1.5]
1515
+ neg_binom = np.random.negative_binomial
1516
+ desired = np.array([1, 0, 1])
1517
+
1518
+ self.setSeed()
1519
+ actual = neg_binom(n * 3, p)
1520
+ assert_array_equal(actual, desired)
1521
+ assert_raises(ValueError, neg_binom, bad_n * 3, p)
1522
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_one)
1523
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_two)
1524
+
1525
+ self.setSeed()
1526
+ actual = neg_binom(n, p * 3)
1527
+ assert_array_equal(actual, desired)
1528
+ assert_raises(ValueError, neg_binom, bad_n, p * 3)
1529
+ assert_raises(ValueError, neg_binom, n, bad_p_one * 3)
1530
+ assert_raises(ValueError, neg_binom, n, bad_p_two * 3)
1531
+
1532
+ def test_poisson(self):
1533
+ max_lam = np.random.RandomState()._poisson_lam_max
1534
+
1535
+ lam = [1]
1536
+ bad_lam_one = [-1]
1537
+ bad_lam_two = [max_lam * 2]
1538
+ poisson = np.random.poisson
1539
+ desired = np.array([1, 1, 0])
1540
+
1541
+ self.setSeed()
1542
+ actual = poisson(lam * 3)
1543
+ assert_array_equal(actual, desired)
1544
+ assert_raises(ValueError, poisson, bad_lam_one * 3)
1545
+ assert_raises(ValueError, poisson, bad_lam_two * 3)
1546
+
1547
+ def test_zipf(self):
1548
+ a = [2]
1549
+ bad_a = [0]
1550
+ zipf = np.random.zipf
1551
+ desired = np.array([2, 2, 1])
1552
+
1553
+ self.setSeed()
1554
+ actual = zipf(a * 3)
1555
+ assert_array_equal(actual, desired)
1556
+ assert_raises(ValueError, zipf, bad_a * 3)
1557
+ with np.errstate(invalid='ignore'):
1558
+ assert_raises(ValueError, zipf, np.nan)
1559
+ assert_raises(ValueError, zipf, [0, 0, np.nan])
1560
+
1561
+ def test_geometric(self):
1562
+ p = [0.5]
1563
+ bad_p_one = [-1]
1564
+ bad_p_two = [1.5]
1565
+ geom = np.random.geometric
1566
+ desired = np.array([2, 2, 2])
1567
+
1568
+ self.setSeed()
1569
+ actual = geom(p * 3)
1570
+ assert_array_equal(actual, desired)
1571
+ assert_raises(ValueError, geom, bad_p_one * 3)
1572
+ assert_raises(ValueError, geom, bad_p_two * 3)
1573
+
1574
+ def test_hypergeometric(self):
1575
+ ngood = [1]
1576
+ nbad = [2]
1577
+ nsample = [2]
1578
+ bad_ngood = [-1]
1579
+ bad_nbad = [-2]
1580
+ bad_nsample_one = [0]
1581
+ bad_nsample_two = [4]
1582
+ hypergeom = np.random.hypergeometric
1583
+ desired = np.array([1, 1, 1])
1584
+
1585
+ self.setSeed()
1586
+ actual = hypergeom(ngood * 3, nbad, nsample)
1587
+ assert_array_equal(actual, desired)
1588
+ assert_raises(ValueError, hypergeom, bad_ngood * 3, nbad, nsample)
1589
+ assert_raises(ValueError, hypergeom, ngood * 3, bad_nbad, nsample)
1590
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_one)
1591
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_two)
1592
+
1593
+ self.setSeed()
1594
+ actual = hypergeom(ngood, nbad * 3, nsample)
1595
+ assert_array_equal(actual, desired)
1596
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad * 3, nsample)
1597
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad * 3, nsample)
1598
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_one)
1599
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_two)
1600
+
1601
+ self.setSeed()
1602
+ actual = hypergeom(ngood, nbad, nsample * 3)
1603
+ assert_array_equal(actual, desired)
1604
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad, nsample * 3)
1605
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad, nsample * 3)
1606
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_one * 3)
1607
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_two * 3)
1608
+
1609
+ def test_logseries(self):
1610
+ p = [0.5]
1611
+ bad_p_one = [2]
1612
+ bad_p_two = [-1]
1613
+ logseries = np.random.logseries
1614
+ desired = np.array([1, 1, 1])
1615
+
1616
+ self.setSeed()
1617
+ actual = logseries(p * 3)
1618
+ assert_array_equal(actual, desired)
1619
+ assert_raises(ValueError, logseries, bad_p_one * 3)
1620
+ assert_raises(ValueError, logseries, bad_p_two * 3)
1621
+
1622
+
1623
+ @pytest.mark.skipif(IS_WASM, reason="can't start thread")
1624
+ class TestThread:
1625
+ # make sure each state produces the same sequence even in threads
1626
+ def setup_method(self):
1627
+ self.seeds = range(4)
1628
+
1629
+ def check_function(self, function, sz):
1630
+ from threading import Thread
1631
+
1632
+ out1 = np.empty((len(self.seeds),) + sz)
1633
+ out2 = np.empty((len(self.seeds),) + sz)
1634
+
1635
+ # threaded generation
1636
+ t = [Thread(target=function, args=(np.random.RandomState(s), o))
1637
+ for s, o in zip(self.seeds, out1)]
1638
+ [x.start() for x in t]
1639
+ [x.join() for x in t]
1640
+
1641
+ # the same serial
1642
+ for s, o in zip(self.seeds, out2):
1643
+ function(np.random.RandomState(s), o)
1644
+
1645
+ # these platforms change x87 fpu precision mode in threads
1646
+ if np.intp().dtype.itemsize == 4 and sys.platform == "win32":
1647
+ assert_array_almost_equal(out1, out2)
1648
+ else:
1649
+ assert_array_equal(out1, out2)
1650
+
1651
+ def test_normal(self):
1652
+ def gen_random(state, out):
1653
+ out[...] = state.normal(size=10000)
1654
+ self.check_function(gen_random, sz=(10000,))
1655
+
1656
+ def test_exp(self):
1657
+ def gen_random(state, out):
1658
+ out[...] = state.exponential(scale=np.ones((100, 1000)))
1659
+ self.check_function(gen_random, sz=(100, 1000))
1660
+
1661
+ def test_multinomial(self):
1662
+ def gen_random(state, out):
1663
+ out[...] = state.multinomial(10, [1/6.]*6, size=10000)
1664
+ self.check_function(gen_random, sz=(10000, 6))
1665
+
1666
+
1667
+ # See Issue #4263
1668
+ class TestSingleEltArrayInput:
1669
+ def setup_method(self):
1670
+ self.argOne = np.array([2])
1671
+ self.argTwo = np.array([3])
1672
+ self.argThree = np.array([4])
1673
+ self.tgtShape = (1,)
1674
+
1675
+ def test_one_arg_funcs(self):
1676
+ funcs = (np.random.exponential, np.random.standard_gamma,
1677
+ np.random.chisquare, np.random.standard_t,
1678
+ np.random.pareto, np.random.weibull,
1679
+ np.random.power, np.random.rayleigh,
1680
+ np.random.poisson, np.random.zipf,
1681
+ np.random.geometric, np.random.logseries)
1682
+
1683
+ probfuncs = (np.random.geometric, np.random.logseries)
1684
+
1685
+ for func in funcs:
1686
+ if func in probfuncs: # p < 1.0
1687
+ out = func(np.array([0.5]))
1688
+
1689
+ else:
1690
+ out = func(self.argOne)
1691
+
1692
+ assert_equal(out.shape, self.tgtShape)
1693
+
1694
+ def test_two_arg_funcs(self):
1695
+ funcs = (np.random.uniform, np.random.normal,
1696
+ np.random.beta, np.random.gamma,
1697
+ np.random.f, np.random.noncentral_chisquare,
1698
+ np.random.vonmises, np.random.laplace,
1699
+ np.random.gumbel, np.random.logistic,
1700
+ np.random.lognormal, np.random.wald,
1701
+ np.random.binomial, np.random.negative_binomial)
1702
+
1703
+ probfuncs = (np.random.binomial, np.random.negative_binomial)
1704
+
1705
+ for func in funcs:
1706
+ if func in probfuncs: # p <= 1
1707
+ argTwo = np.array([0.5])
1708
+
1709
+ else:
1710
+ argTwo = self.argTwo
1711
+
1712
+ out = func(self.argOne, argTwo)
1713
+ assert_equal(out.shape, self.tgtShape)
1714
+
1715
+ out = func(self.argOne[0], argTwo)
1716
+ assert_equal(out.shape, self.tgtShape)
1717
+
1718
+ out = func(self.argOne, argTwo[0])
1719
+ assert_equal(out.shape, self.tgtShape)
1720
+
1721
+ def test_randint(self):
1722
+ itype = [bool, np.int8, np.uint8, np.int16, np.uint16,
1723
+ np.int32, np.uint32, np.int64, np.uint64]
1724
+ func = np.random.randint
1725
+ high = np.array([1])
1726
+ low = np.array([0])
1727
+
1728
+ for dt in itype:
1729
+ out = func(low, high, dtype=dt)
1730
+ assert_equal(out.shape, self.tgtShape)
1731
+
1732
+ out = func(low[0], high, dtype=dt)
1733
+ assert_equal(out.shape, self.tgtShape)
1734
+
1735
+ out = func(low, high[0], dtype=dt)
1736
+ assert_equal(out.shape, self.tgtShape)
1737
+
1738
+ def test_three_arg_funcs(self):
1739
+ funcs = [np.random.noncentral_f, np.random.triangular,
1740
+ np.random.hypergeometric]
1741
+
1742
+ for func in funcs:
1743
+ out = func(self.argOne, self.argTwo, self.argThree)
1744
+ assert_equal(out.shape, self.tgtShape)
1745
+
1746
+ out = func(self.argOne[0], self.argTwo, self.argThree)
1747
+ assert_equal(out.shape, self.tgtShape)
1748
+
1749
+ out = func(self.argOne, self.argTwo[0], self.argThree)
1750
+ assert_equal(out.shape, self.tgtShape)
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_randomstate.py ADDED
@@ -0,0 +1,2121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import hashlib
2
+ import pickle
3
+ import sys
4
+ import warnings
5
+
6
+ import numpy as np
7
+ import pytest
8
+ from numpy.testing import (
9
+ assert_, assert_raises, assert_equal, assert_warns,
10
+ assert_no_warnings, assert_array_equal, assert_array_almost_equal,
11
+ suppress_warnings, IS_WASM
12
+ )
13
+
14
+ from numpy.random import MT19937, PCG64
15
+ from numpy import random
16
+
17
+ INT_FUNCS = {'binomial': (100.0, 0.6),
18
+ 'geometric': (.5,),
19
+ 'hypergeometric': (20, 20, 10),
20
+ 'logseries': (.5,),
21
+ 'multinomial': (20, np.ones(6) / 6.0),
22
+ 'negative_binomial': (100, .5),
23
+ 'poisson': (10.0,),
24
+ 'zipf': (2,),
25
+ }
26
+
27
+ if np.iinfo(int).max < 2**32:
28
+ # Windows and some 32-bit platforms, e.g., ARM
29
+ INT_FUNC_HASHES = {'binomial': '2fbead005fc63942decb5326d36a1f32fe2c9d32c904ee61e46866b88447c263',
30
+ 'logseries': '23ead5dcde35d4cfd4ef2c105e4c3d43304b45dc1b1444b7823b9ee4fa144ebb',
31
+ 'geometric': '0d764db64f5c3bad48c8c33551c13b4d07a1e7b470f77629bef6c985cac76fcf',
32
+ 'hypergeometric': '7b59bf2f1691626c5815cdcd9a49e1dd68697251d4521575219e4d2a1b8b2c67',
33
+ 'multinomial': 'd754fa5b92943a38ec07630de92362dd2e02c43577fc147417dc5b9db94ccdd3',
34
+ 'negative_binomial': '8eb216f7cb2a63cf55605422845caaff002fddc64a7dc8b2d45acd477a49e824',
35
+ 'poisson': '70c891d76104013ebd6f6bcf30d403a9074b886ff62e4e6b8eb605bf1a4673b7',
36
+ 'zipf': '01f074f97517cd5d21747148ac6ca4074dde7fcb7acbaec0a936606fecacd93f',
37
+ }
38
+ else:
39
+ INT_FUNC_HASHES = {'binomial': '8626dd9d052cb608e93d8868de0a7b347258b199493871a1dc56e2a26cacb112',
40
+ 'geometric': '8edd53d272e49c4fc8fbbe6c7d08d563d62e482921f3131d0a0e068af30f0db9',
41
+ 'hypergeometric': '83496cc4281c77b786c9b7ad88b74d42e01603a55c60577ebab81c3ba8d45657',
42
+ 'logseries': '65878a38747c176bc00e930ebafebb69d4e1e16cd3a704e264ea8f5e24f548db',
43
+ 'multinomial': '7a984ae6dca26fd25374479e118b22f55db0aedccd5a0f2584ceada33db98605',
44
+ 'negative_binomial': 'd636d968e6a24ae92ab52fe11c46ac45b0897e98714426764e820a7d77602a61',
45
+ 'poisson': '956552176f77e7c9cb20d0118fc9cf690be488d790ed4b4c4747b965e61b0bb4',
46
+ 'zipf': 'f84ba7feffda41e606e20b28dfc0f1ea9964a74574513d4a4cbc98433a8bfa45',
47
+ }
48
+
49
+
50
+ @pytest.fixture(scope='module', params=INT_FUNCS)
51
+ def int_func(request):
52
+ return (request.param, INT_FUNCS[request.param],
53
+ INT_FUNC_HASHES[request.param])
54
+
55
+
56
+ @pytest.fixture
57
+ def restore_singleton_bitgen():
58
+ """Ensures that the singleton bitgen is restored after a test"""
59
+ orig_bitgen = np.random.get_bit_generator()
60
+ yield
61
+ np.random.set_bit_generator(orig_bitgen)
62
+
63
+
64
+ def assert_mt19937_state_equal(a, b):
65
+ assert_equal(a['bit_generator'], b['bit_generator'])
66
+ assert_array_equal(a['state']['key'], b['state']['key'])
67
+ assert_array_equal(a['state']['pos'], b['state']['pos'])
68
+ assert_equal(a['has_gauss'], b['has_gauss'])
69
+ assert_equal(a['gauss'], b['gauss'])
70
+
71
+
72
+ class TestSeed:
73
+ def test_scalar(self):
74
+ s = random.RandomState(0)
75
+ assert_equal(s.randint(1000), 684)
76
+ s = random.RandomState(4294967295)
77
+ assert_equal(s.randint(1000), 419)
78
+
79
+ def test_array(self):
80
+ s = random.RandomState(range(10))
81
+ assert_equal(s.randint(1000), 468)
82
+ s = random.RandomState(np.arange(10))
83
+ assert_equal(s.randint(1000), 468)
84
+ s = random.RandomState([0])
85
+ assert_equal(s.randint(1000), 973)
86
+ s = random.RandomState([4294967295])
87
+ assert_equal(s.randint(1000), 265)
88
+
89
+ def test_invalid_scalar(self):
90
+ # seed must be an unsigned 32 bit integer
91
+ assert_raises(TypeError, random.RandomState, -0.5)
92
+ assert_raises(ValueError, random.RandomState, -1)
93
+
94
+ def test_invalid_array(self):
95
+ # seed must be an unsigned 32 bit integer
96
+ assert_raises(TypeError, random.RandomState, [-0.5])
97
+ assert_raises(ValueError, random.RandomState, [-1])
98
+ assert_raises(ValueError, random.RandomState, [4294967296])
99
+ assert_raises(ValueError, random.RandomState, [1, 2, 4294967296])
100
+ assert_raises(ValueError, random.RandomState, [1, -2, 4294967296])
101
+
102
+ def test_invalid_array_shape(self):
103
+ # gh-9832
104
+ assert_raises(ValueError, random.RandomState, np.array([],
105
+ dtype=np.int64))
106
+ assert_raises(ValueError, random.RandomState, [[1, 2, 3]])
107
+ assert_raises(ValueError, random.RandomState, [[1, 2, 3],
108
+ [4, 5, 6]])
109
+
110
+ def test_cannot_seed(self):
111
+ rs = random.RandomState(PCG64(0))
112
+ with assert_raises(TypeError):
113
+ rs.seed(1234)
114
+
115
+ def test_invalid_initialization(self):
116
+ assert_raises(ValueError, random.RandomState, MT19937)
117
+
118
+
119
+ class TestBinomial:
120
+ def test_n_zero(self):
121
+ # Tests the corner case of n == 0 for the binomial distribution.
122
+ # binomial(0, p) should be zero for any p in [0, 1].
123
+ # This test addresses issue #3480.
124
+ zeros = np.zeros(2, dtype='int')
125
+ for p in [0, .5, 1]:
126
+ assert_(random.binomial(0, p) == 0)
127
+ assert_array_equal(random.binomial(zeros, p), zeros)
128
+
129
+ def test_p_is_nan(self):
130
+ # Issue #4571.
131
+ assert_raises(ValueError, random.binomial, 1, np.nan)
132
+
133
+
134
+ class TestMultinomial:
135
+ def test_basic(self):
136
+ random.multinomial(100, [0.2, 0.8])
137
+
138
+ def test_zero_probability(self):
139
+ random.multinomial(100, [0.2, 0.8, 0.0, 0.0, 0.0])
140
+
141
+ def test_int_negative_interval(self):
142
+ assert_(-5 <= random.randint(-5, -1) < -1)
143
+ x = random.randint(-5, -1, 5)
144
+ assert_(np.all(-5 <= x))
145
+ assert_(np.all(x < -1))
146
+
147
+ def test_size(self):
148
+ # gh-3173
149
+ p = [0.5, 0.5]
150
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
151
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
152
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
153
+ assert_equal(random.multinomial(1, p, [2, 2]).shape, (2, 2, 2))
154
+ assert_equal(random.multinomial(1, p, (2, 2)).shape, (2, 2, 2))
155
+ assert_equal(random.multinomial(1, p, np.array((2, 2))).shape,
156
+ (2, 2, 2))
157
+
158
+ assert_raises(TypeError, random.multinomial, 1, p,
159
+ float(1))
160
+
161
+ def test_invalid_prob(self):
162
+ assert_raises(ValueError, random.multinomial, 100, [1.1, 0.2])
163
+ assert_raises(ValueError, random.multinomial, 100, [-.1, 0.9])
164
+
165
+ def test_invalid_n(self):
166
+ assert_raises(ValueError, random.multinomial, -1, [0.8, 0.2])
167
+
168
+ def test_p_non_contiguous(self):
169
+ p = np.arange(15.)
170
+ p /= np.sum(p[1::3])
171
+ pvals = p[1::3]
172
+ random.seed(1432985819)
173
+ non_contig = random.multinomial(100, pvals=pvals)
174
+ random.seed(1432985819)
175
+ contig = random.multinomial(100, pvals=np.ascontiguousarray(pvals))
176
+ assert_array_equal(non_contig, contig)
177
+
178
+ def test_multinomial_pvals_float32(self):
179
+ x = np.array([9.9e-01, 9.9e-01, 1.0e-09, 1.0e-09, 1.0e-09, 1.0e-09,
180
+ 1.0e-09, 1.0e-09, 1.0e-09, 1.0e-09], dtype=np.float32)
181
+ pvals = x / x.sum()
182
+ match = r"[\w\s]*pvals array is cast to 64-bit floating"
183
+ with pytest.raises(ValueError, match=match):
184
+ random.multinomial(1, pvals)
185
+
186
+ def test_multinomial_n_float(self):
187
+ # Non-index integer types should gracefully truncate floats
188
+ random.multinomial(100.5, [0.2, 0.8])
189
+
190
+ class TestSetState:
191
+ def setup_method(self):
192
+ self.seed = 1234567890
193
+ self.random_state = random.RandomState(self.seed)
194
+ self.state = self.random_state.get_state()
195
+
196
+ def test_basic(self):
197
+ old = self.random_state.tomaxint(16)
198
+ self.random_state.set_state(self.state)
199
+ new = self.random_state.tomaxint(16)
200
+ assert_(np.all(old == new))
201
+
202
+ def test_gaussian_reset(self):
203
+ # Make sure the cached every-other-Gaussian is reset.
204
+ old = self.random_state.standard_normal(size=3)
205
+ self.random_state.set_state(self.state)
206
+ new = self.random_state.standard_normal(size=3)
207
+ assert_(np.all(old == new))
208
+
209
+ def test_gaussian_reset_in_media_res(self):
210
+ # When the state is saved with a cached Gaussian, make sure the
211
+ # cached Gaussian is restored.
212
+
213
+ self.random_state.standard_normal()
214
+ state = self.random_state.get_state()
215
+ old = self.random_state.standard_normal(size=3)
216
+ self.random_state.set_state(state)
217
+ new = self.random_state.standard_normal(size=3)
218
+ assert_(np.all(old == new))
219
+
220
+ def test_backwards_compatibility(self):
221
+ # Make sure we can accept old state tuples that do not have the
222
+ # cached Gaussian value.
223
+ old_state = self.state[:-2]
224
+ x1 = self.random_state.standard_normal(size=16)
225
+ self.random_state.set_state(old_state)
226
+ x2 = self.random_state.standard_normal(size=16)
227
+ self.random_state.set_state(self.state)
228
+ x3 = self.random_state.standard_normal(size=16)
229
+ assert_(np.all(x1 == x2))
230
+ assert_(np.all(x1 == x3))
231
+
232
+ def test_negative_binomial(self):
233
+ # Ensure that the negative binomial results take floating point
234
+ # arguments without truncation.
235
+ self.random_state.negative_binomial(0.5, 0.5)
236
+
237
+ def test_get_state_warning(self):
238
+ rs = random.RandomState(PCG64())
239
+ with suppress_warnings() as sup:
240
+ w = sup.record(RuntimeWarning)
241
+ state = rs.get_state()
242
+ assert_(len(w) == 1)
243
+ assert isinstance(state, dict)
244
+ assert state['bit_generator'] == 'PCG64'
245
+
246
+ def test_invalid_legacy_state_setting(self):
247
+ state = self.random_state.get_state()
248
+ new_state = ('Unknown', ) + state[1:]
249
+ assert_raises(ValueError, self.random_state.set_state, new_state)
250
+ assert_raises(TypeError, self.random_state.set_state,
251
+ np.array(new_state, dtype=object))
252
+ state = self.random_state.get_state(legacy=False)
253
+ del state['bit_generator']
254
+ assert_raises(ValueError, self.random_state.set_state, state)
255
+
256
+ def test_pickle(self):
257
+ self.random_state.seed(0)
258
+ self.random_state.random_sample(100)
259
+ self.random_state.standard_normal()
260
+ pickled = self.random_state.get_state(legacy=False)
261
+ assert_equal(pickled['has_gauss'], 1)
262
+ rs_unpick = pickle.loads(pickle.dumps(self.random_state))
263
+ unpickled = rs_unpick.get_state(legacy=False)
264
+ assert_mt19937_state_equal(pickled, unpickled)
265
+
266
+ def test_state_setting(self):
267
+ attr_state = self.random_state.__getstate__()
268
+ self.random_state.standard_normal()
269
+ self.random_state.__setstate__(attr_state)
270
+ state = self.random_state.get_state(legacy=False)
271
+ assert_mt19937_state_equal(attr_state, state)
272
+
273
+ def test_repr(self):
274
+ assert repr(self.random_state).startswith('RandomState(MT19937)')
275
+
276
+
277
+ class TestRandint:
278
+
279
+ rfunc = random.randint
280
+
281
+ # valid integer/boolean types
282
+ itype = [np.bool_, np.int8, np.uint8, np.int16, np.uint16,
283
+ np.int32, np.uint32, np.int64, np.uint64]
284
+
285
+ def test_unsupported_type(self):
286
+ assert_raises(TypeError, self.rfunc, 1, dtype=float)
287
+
288
+ def test_bounds_checking(self):
289
+ for dt in self.itype:
290
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
291
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
292
+ assert_raises(ValueError, self.rfunc, lbnd - 1, ubnd, dtype=dt)
293
+ assert_raises(ValueError, self.rfunc, lbnd, ubnd + 1, dtype=dt)
294
+ assert_raises(ValueError, self.rfunc, ubnd, lbnd, dtype=dt)
295
+ assert_raises(ValueError, self.rfunc, 1, 0, dtype=dt)
296
+
297
+ def test_rng_zero_and_extremes(self):
298
+ for dt in self.itype:
299
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
300
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
301
+
302
+ tgt = ubnd - 1
303
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
304
+
305
+ tgt = lbnd
306
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
307
+
308
+ tgt = (lbnd + ubnd)//2
309
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
310
+
311
+ def test_full_range(self):
312
+ # Test for ticket #1690
313
+
314
+ for dt in self.itype:
315
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
316
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
317
+
318
+ try:
319
+ self.rfunc(lbnd, ubnd, dtype=dt)
320
+ except Exception as e:
321
+ raise AssertionError("No error should have been raised, "
322
+ "but one was with the following "
323
+ "message:\n\n%s" % str(e))
324
+
325
+ def test_in_bounds_fuzz(self):
326
+ # Don't use fixed seed
327
+ random.seed()
328
+
329
+ for dt in self.itype[1:]:
330
+ for ubnd in [4, 8, 16]:
331
+ vals = self.rfunc(2, ubnd, size=2**16, dtype=dt)
332
+ assert_(vals.max() < ubnd)
333
+ assert_(vals.min() >= 2)
334
+
335
+ vals = self.rfunc(0, 2, size=2**16, dtype=np.bool_)
336
+
337
+ assert_(vals.max() < 2)
338
+ assert_(vals.min() >= 0)
339
+
340
+ def test_repeatability(self):
341
+ # We use a sha256 hash of generated sequences of 1000 samples
342
+ # in the range [0, 6) for all but bool, where the range
343
+ # is [0, 2). Hashes are for little endian numbers.
344
+ tgt = {'bool': '509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71',
345
+ 'int16': '7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4',
346
+ 'int32': 'e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92f',
347
+ 'int64': '0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9e',
348
+ 'int8': '001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404',
349
+ 'uint16': '7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4',
350
+ 'uint32': 'e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92f',
351
+ 'uint64': '0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9e',
352
+ 'uint8': '001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404'}
353
+
354
+ for dt in self.itype[1:]:
355
+ random.seed(1234)
356
+
357
+ # view as little endian for hash
358
+ if sys.byteorder == 'little':
359
+ val = self.rfunc(0, 6, size=1000, dtype=dt)
360
+ else:
361
+ val = self.rfunc(0, 6, size=1000, dtype=dt).byteswap()
362
+
363
+ res = hashlib.sha256(val.view(np.int8)).hexdigest()
364
+ assert_(tgt[np.dtype(dt).name] == res)
365
+
366
+ # bools do not depend on endianness
367
+ random.seed(1234)
368
+ val = self.rfunc(0, 2, size=1000, dtype=bool).view(np.int8)
369
+ res = hashlib.sha256(val).hexdigest()
370
+ assert_(tgt[np.dtype(bool).name] == res)
371
+
372
+ @pytest.mark.skipif(np.iinfo('l').max < 2**32,
373
+ reason='Cannot test with 32-bit C long')
374
+ def test_repeatability_32bit_boundary_broadcasting(self):
375
+ desired = np.array([[[3992670689, 2438360420, 2557845020],
376
+ [4107320065, 4142558326, 3216529513],
377
+ [1605979228, 2807061240, 665605495]],
378
+ [[3211410639, 4128781000, 457175120],
379
+ [1712592594, 1282922662, 3081439808],
380
+ [3997822960, 2008322436, 1563495165]],
381
+ [[1398375547, 4269260146, 115316740],
382
+ [3414372578, 3437564012, 2112038651],
383
+ [3572980305, 2260248732, 3908238631]],
384
+ [[2561372503, 223155946, 3127879445],
385
+ [ 441282060, 3514786552, 2148440361],
386
+ [1629275283, 3479737011, 3003195987]],
387
+ [[ 412181688, 940383289, 3047321305],
388
+ [2978368172, 764731833, 2282559898],
389
+ [ 105711276, 720447391, 3596512484]]])
390
+ for size in [None, (5, 3, 3)]:
391
+ random.seed(12345)
392
+ x = self.rfunc([[-1], [0], [1]], [2**32 - 1, 2**32, 2**32 + 1],
393
+ size=size)
394
+ assert_array_equal(x, desired if size is not None else desired[0])
395
+
396
+ def test_int64_uint64_corner_case(self):
397
+ # When stored in Numpy arrays, `lbnd` is casted
398
+ # as np.int64, and `ubnd` is casted as np.uint64.
399
+ # Checking whether `lbnd` >= `ubnd` used to be
400
+ # done solely via direct comparison, which is incorrect
401
+ # because when Numpy tries to compare both numbers,
402
+ # it casts both to np.float64 because there is
403
+ # no integer superset of np.int64 and np.uint64. However,
404
+ # `ubnd` is too large to be represented in np.float64,
405
+ # causing it be round down to np.iinfo(np.int64).max,
406
+ # leading to a ValueError because `lbnd` now equals
407
+ # the new `ubnd`.
408
+
409
+ dt = np.int64
410
+ tgt = np.iinfo(np.int64).max
411
+ lbnd = np.int64(np.iinfo(np.int64).max)
412
+ ubnd = np.uint64(np.iinfo(np.int64).max + 1)
413
+
414
+ # None of these function calls should
415
+ # generate a ValueError now.
416
+ actual = random.randint(lbnd, ubnd, dtype=dt)
417
+ assert_equal(actual, tgt)
418
+
419
+ def test_respect_dtype_singleton(self):
420
+ # See gh-7203
421
+ for dt in self.itype:
422
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
423
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
424
+
425
+ sample = self.rfunc(lbnd, ubnd, dtype=dt)
426
+ assert_equal(sample.dtype, np.dtype(dt))
427
+
428
+ for dt in (bool, int):
429
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
430
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
431
+
432
+ # gh-7284: Ensure that we get Python data types
433
+ sample = self.rfunc(lbnd, ubnd, dtype=dt)
434
+ assert_(not hasattr(sample, 'dtype'))
435
+ assert_equal(type(sample), dt)
436
+
437
+
438
+ class TestRandomDist:
439
+ # Make sure the random distribution returns the correct value for a
440
+ # given seed
441
+
442
+ def setup_method(self):
443
+ self.seed = 1234567890
444
+
445
+ def test_rand(self):
446
+ random.seed(self.seed)
447
+ actual = random.rand(3, 2)
448
+ desired = np.array([[0.61879477158567997, 0.59162362775974664],
449
+ [0.88868358904449662, 0.89165480011560816],
450
+ [0.4575674820298663, 0.7781880808593471]])
451
+ assert_array_almost_equal(actual, desired, decimal=15)
452
+
453
+ def test_rand_singleton(self):
454
+ random.seed(self.seed)
455
+ actual = random.rand()
456
+ desired = 0.61879477158567997
457
+ assert_array_almost_equal(actual, desired, decimal=15)
458
+
459
+ def test_randn(self):
460
+ random.seed(self.seed)
461
+ actual = random.randn(3, 2)
462
+ desired = np.array([[1.34016345771863121, 1.73759122771936081],
463
+ [1.498988344300628, -0.2286433324536169],
464
+ [2.031033998682787, 2.17032494605655257]])
465
+ assert_array_almost_equal(actual, desired, decimal=15)
466
+
467
+ random.seed(self.seed)
468
+ actual = random.randn()
469
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
470
+
471
+ def test_randint(self):
472
+ random.seed(self.seed)
473
+ actual = random.randint(-99, 99, size=(3, 2))
474
+ desired = np.array([[31, 3],
475
+ [-52, 41],
476
+ [-48, -66]])
477
+ assert_array_equal(actual, desired)
478
+
479
+ def test_random_integers(self):
480
+ random.seed(self.seed)
481
+ with suppress_warnings() as sup:
482
+ w = sup.record(DeprecationWarning)
483
+ actual = random.random_integers(-99, 99, size=(3, 2))
484
+ assert_(len(w) == 1)
485
+ desired = np.array([[31, 3],
486
+ [-52, 41],
487
+ [-48, -66]])
488
+ assert_array_equal(actual, desired)
489
+
490
+ random.seed(self.seed)
491
+ with suppress_warnings() as sup:
492
+ w = sup.record(DeprecationWarning)
493
+ actual = random.random_integers(198, size=(3, 2))
494
+ assert_(len(w) == 1)
495
+ assert_array_equal(actual, desired + 100)
496
+
497
+ def test_tomaxint(self):
498
+ random.seed(self.seed)
499
+ rs = random.RandomState(self.seed)
500
+ actual = rs.tomaxint(size=(3, 2))
501
+ if np.iinfo(int).max == 2147483647:
502
+ desired = np.array([[1328851649, 731237375],
503
+ [1270502067, 320041495],
504
+ [1908433478, 499156889]], dtype=np.int64)
505
+ else:
506
+ desired = np.array([[5707374374421908479, 5456764827585442327],
507
+ [8196659375100692377, 8224063923314595285],
508
+ [4220315081820346526, 7177518203184491332]],
509
+ dtype=np.int64)
510
+
511
+ assert_equal(actual, desired)
512
+
513
+ rs.seed(self.seed)
514
+ actual = rs.tomaxint()
515
+ assert_equal(actual, desired[0, 0])
516
+
517
+ def test_random_integers_max_int(self):
518
+ # Tests whether random_integers can generate the
519
+ # maximum allowed Python int that can be converted
520
+ # into a C long. Previous implementations of this
521
+ # method have thrown an OverflowError when attempting
522
+ # to generate this integer.
523
+ with suppress_warnings() as sup:
524
+ w = sup.record(DeprecationWarning)
525
+ actual = random.random_integers(np.iinfo('l').max,
526
+ np.iinfo('l').max)
527
+ assert_(len(w) == 1)
528
+
529
+ desired = np.iinfo('l').max
530
+ assert_equal(actual, desired)
531
+ with suppress_warnings() as sup:
532
+ w = sup.record(DeprecationWarning)
533
+ typer = np.dtype('l').type
534
+ actual = random.random_integers(typer(np.iinfo('l').max),
535
+ typer(np.iinfo('l').max))
536
+ assert_(len(w) == 1)
537
+ assert_equal(actual, desired)
538
+
539
+ def test_random_integers_deprecated(self):
540
+ with warnings.catch_warnings():
541
+ warnings.simplefilter("error", DeprecationWarning)
542
+
543
+ # DeprecationWarning raised with high == None
544
+ assert_raises(DeprecationWarning,
545
+ random.random_integers,
546
+ np.iinfo('l').max)
547
+
548
+ # DeprecationWarning raised with high != None
549
+ assert_raises(DeprecationWarning,
550
+ random.random_integers,
551
+ np.iinfo('l').max, np.iinfo('l').max)
552
+
553
+ def test_random_sample(self):
554
+ random.seed(self.seed)
555
+ actual = random.random_sample((3, 2))
556
+ desired = np.array([[0.61879477158567997, 0.59162362775974664],
557
+ [0.88868358904449662, 0.89165480011560816],
558
+ [0.4575674820298663, 0.7781880808593471]])
559
+ assert_array_almost_equal(actual, desired, decimal=15)
560
+
561
+ random.seed(self.seed)
562
+ actual = random.random_sample()
563
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
564
+
565
+ def test_choice_uniform_replace(self):
566
+ random.seed(self.seed)
567
+ actual = random.choice(4, 4)
568
+ desired = np.array([2, 3, 2, 3])
569
+ assert_array_equal(actual, desired)
570
+
571
+ def test_choice_nonuniform_replace(self):
572
+ random.seed(self.seed)
573
+ actual = random.choice(4, 4, p=[0.4, 0.4, 0.1, 0.1])
574
+ desired = np.array([1, 1, 2, 2])
575
+ assert_array_equal(actual, desired)
576
+
577
+ def test_choice_uniform_noreplace(self):
578
+ random.seed(self.seed)
579
+ actual = random.choice(4, 3, replace=False)
580
+ desired = np.array([0, 1, 3])
581
+ assert_array_equal(actual, desired)
582
+
583
+ def test_choice_nonuniform_noreplace(self):
584
+ random.seed(self.seed)
585
+ actual = random.choice(4, 3, replace=False, p=[0.1, 0.3, 0.5, 0.1])
586
+ desired = np.array([2, 3, 1])
587
+ assert_array_equal(actual, desired)
588
+
589
+ def test_choice_noninteger(self):
590
+ random.seed(self.seed)
591
+ actual = random.choice(['a', 'b', 'c', 'd'], 4)
592
+ desired = np.array(['c', 'd', 'c', 'd'])
593
+ assert_array_equal(actual, desired)
594
+
595
+ def test_choice_exceptions(self):
596
+ sample = random.choice
597
+ assert_raises(ValueError, sample, -1, 3)
598
+ assert_raises(ValueError, sample, 3., 3)
599
+ assert_raises(ValueError, sample, [[1, 2], [3, 4]], 3)
600
+ assert_raises(ValueError, sample, [], 3)
601
+ assert_raises(ValueError, sample, [1, 2, 3, 4], 3,
602
+ p=[[0.25, 0.25], [0.25, 0.25]])
603
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4, 0.2])
604
+ assert_raises(ValueError, sample, [1, 2], 3, p=[1.1, -0.1])
605
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4])
606
+ assert_raises(ValueError, sample, [1, 2, 3], 4, replace=False)
607
+ # gh-13087
608
+ assert_raises(ValueError, sample, [1, 2, 3], -2, replace=False)
609
+ assert_raises(ValueError, sample, [1, 2, 3], (-1,), replace=False)
610
+ assert_raises(ValueError, sample, [1, 2, 3], (-1, 1), replace=False)
611
+ assert_raises(ValueError, sample, [1, 2, 3], 2,
612
+ replace=False, p=[1, 0, 0])
613
+
614
+ def test_choice_return_shape(self):
615
+ p = [0.1, 0.9]
616
+ # Check scalar
617
+ assert_(np.isscalar(random.choice(2, replace=True)))
618
+ assert_(np.isscalar(random.choice(2, replace=False)))
619
+ assert_(np.isscalar(random.choice(2, replace=True, p=p)))
620
+ assert_(np.isscalar(random.choice(2, replace=False, p=p)))
621
+ assert_(np.isscalar(random.choice([1, 2], replace=True)))
622
+ assert_(random.choice([None], replace=True) is None)
623
+ a = np.array([1, 2])
624
+ arr = np.empty(1, dtype=object)
625
+ arr[0] = a
626
+ assert_(random.choice(arr, replace=True) is a)
627
+
628
+ # Check 0-d array
629
+ s = tuple()
630
+ assert_(not np.isscalar(random.choice(2, s, replace=True)))
631
+ assert_(not np.isscalar(random.choice(2, s, replace=False)))
632
+ assert_(not np.isscalar(random.choice(2, s, replace=True, p=p)))
633
+ assert_(not np.isscalar(random.choice(2, s, replace=False, p=p)))
634
+ assert_(not np.isscalar(random.choice([1, 2], s, replace=True)))
635
+ assert_(random.choice([None], s, replace=True).ndim == 0)
636
+ a = np.array([1, 2])
637
+ arr = np.empty(1, dtype=object)
638
+ arr[0] = a
639
+ assert_(random.choice(arr, s, replace=True).item() is a)
640
+
641
+ # Check multi dimensional array
642
+ s = (2, 3)
643
+ p = [0.1, 0.1, 0.1, 0.1, 0.4, 0.2]
644
+ assert_equal(random.choice(6, s, replace=True).shape, s)
645
+ assert_equal(random.choice(6, s, replace=False).shape, s)
646
+ assert_equal(random.choice(6, s, replace=True, p=p).shape, s)
647
+ assert_equal(random.choice(6, s, replace=False, p=p).shape, s)
648
+ assert_equal(random.choice(np.arange(6), s, replace=True).shape, s)
649
+
650
+ # Check zero-size
651
+ assert_equal(random.randint(0, 0, size=(3, 0, 4)).shape, (3, 0, 4))
652
+ assert_equal(random.randint(0, -10, size=0).shape, (0,))
653
+ assert_equal(random.randint(10, 10, size=0).shape, (0,))
654
+ assert_equal(random.choice(0, size=0).shape, (0,))
655
+ assert_equal(random.choice([], size=(0,)).shape, (0,))
656
+ assert_equal(random.choice(['a', 'b'], size=(3, 0, 4)).shape,
657
+ (3, 0, 4))
658
+ assert_raises(ValueError, random.choice, [], 10)
659
+
660
+ def test_choice_nan_probabilities(self):
661
+ a = np.array([42, 1, 2])
662
+ p = [None, None, None]
663
+ assert_raises(ValueError, random.choice, a, p=p)
664
+
665
+ def test_choice_p_non_contiguous(self):
666
+ p = np.ones(10) / 5
667
+ p[1::2] = 3.0
668
+ random.seed(self.seed)
669
+ non_contig = random.choice(5, 3, p=p[::2])
670
+ random.seed(self.seed)
671
+ contig = random.choice(5, 3, p=np.ascontiguousarray(p[::2]))
672
+ assert_array_equal(non_contig, contig)
673
+
674
+ def test_bytes(self):
675
+ random.seed(self.seed)
676
+ actual = random.bytes(10)
677
+ desired = b'\x82Ui\x9e\xff\x97+Wf\xa5'
678
+ assert_equal(actual, desired)
679
+
680
+ def test_shuffle(self):
681
+ # Test lists, arrays (of various dtypes), and multidimensional versions
682
+ # of both, c-contiguous or not:
683
+ for conv in [lambda x: np.array([]),
684
+ lambda x: x,
685
+ lambda x: np.asarray(x).astype(np.int8),
686
+ lambda x: np.asarray(x).astype(np.float32),
687
+ lambda x: np.asarray(x).astype(np.complex64),
688
+ lambda x: np.asarray(x).astype(object),
689
+ lambda x: [(i, i) for i in x],
690
+ lambda x: np.asarray([[i, i] for i in x]),
691
+ lambda x: np.vstack([x, x]).T,
692
+ # gh-11442
693
+ lambda x: (np.asarray([(i, i) for i in x],
694
+ [("a", int), ("b", int)])
695
+ .view(np.recarray)),
696
+ # gh-4270
697
+ lambda x: np.asarray([(i, i) for i in x],
698
+ [("a", object, (1,)),
699
+ ("b", np.int32, (1,))])]:
700
+ random.seed(self.seed)
701
+ alist = conv([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
702
+ random.shuffle(alist)
703
+ actual = alist
704
+ desired = conv([0, 1, 9, 6, 2, 4, 5, 8, 7, 3])
705
+ assert_array_equal(actual, desired)
706
+
707
+ def test_shuffle_masked(self):
708
+ # gh-3263
709
+ a = np.ma.masked_values(np.reshape(range(20), (5, 4)) % 3 - 1, -1)
710
+ b = np.ma.masked_values(np.arange(20) % 3 - 1, -1)
711
+ a_orig = a.copy()
712
+ b_orig = b.copy()
713
+ for i in range(50):
714
+ random.shuffle(a)
715
+ assert_equal(
716
+ sorted(a.data[~a.mask]), sorted(a_orig.data[~a_orig.mask]))
717
+ random.shuffle(b)
718
+ assert_equal(
719
+ sorted(b.data[~b.mask]), sorted(b_orig.data[~b_orig.mask]))
720
+
721
+ def test_shuffle_invalid_objects(self):
722
+ x = np.array(3)
723
+ assert_raises(TypeError, random.shuffle, x)
724
+
725
+ def test_permutation(self):
726
+ random.seed(self.seed)
727
+ alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
728
+ actual = random.permutation(alist)
729
+ desired = [0, 1, 9, 6, 2, 4, 5, 8, 7, 3]
730
+ assert_array_equal(actual, desired)
731
+
732
+ random.seed(self.seed)
733
+ arr_2d = np.atleast_2d([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]).T
734
+ actual = random.permutation(arr_2d)
735
+ assert_array_equal(actual, np.atleast_2d(desired).T)
736
+
737
+ random.seed(self.seed)
738
+ bad_x_str = "abcd"
739
+ assert_raises(IndexError, random.permutation, bad_x_str)
740
+
741
+ random.seed(self.seed)
742
+ bad_x_float = 1.2
743
+ assert_raises(IndexError, random.permutation, bad_x_float)
744
+
745
+ integer_val = 10
746
+ desired = [9, 0, 8, 5, 1, 3, 4, 7, 6, 2]
747
+
748
+ random.seed(self.seed)
749
+ actual = random.permutation(integer_val)
750
+ assert_array_equal(actual, desired)
751
+
752
+ def test_beta(self):
753
+ random.seed(self.seed)
754
+ actual = random.beta(.1, .9, size=(3, 2))
755
+ desired = np.array(
756
+ [[1.45341850513746058e-02, 5.31297615662868145e-04],
757
+ [1.85366619058432324e-06, 4.19214516800110563e-03],
758
+ [1.58405155108498093e-04, 1.26252891949397652e-04]])
759
+ assert_array_almost_equal(actual, desired, decimal=15)
760
+
761
+ def test_binomial(self):
762
+ random.seed(self.seed)
763
+ actual = random.binomial(100.123, .456, size=(3, 2))
764
+ desired = np.array([[37, 43],
765
+ [42, 48],
766
+ [46, 45]])
767
+ assert_array_equal(actual, desired)
768
+
769
+ random.seed(self.seed)
770
+ actual = random.binomial(100.123, .456)
771
+ desired = 37
772
+ assert_array_equal(actual, desired)
773
+
774
+ def test_chisquare(self):
775
+ random.seed(self.seed)
776
+ actual = random.chisquare(50, size=(3, 2))
777
+ desired = np.array([[63.87858175501090585, 68.68407748911370447],
778
+ [65.77116116901505904, 47.09686762438974483],
779
+ [72.3828403199695174, 74.18408615260374006]])
780
+ assert_array_almost_equal(actual, desired, decimal=13)
781
+
782
+ def test_dirichlet(self):
783
+ random.seed(self.seed)
784
+ alpha = np.array([51.72840233779265162, 39.74494232180943953])
785
+ actual = random.dirichlet(alpha, size=(3, 2))
786
+ desired = np.array([[[0.54539444573611562, 0.45460555426388438],
787
+ [0.62345816822039413, 0.37654183177960598]],
788
+ [[0.55206000085785778, 0.44793999914214233],
789
+ [0.58964023305154301, 0.41035976694845688]],
790
+ [[0.59266909280647828, 0.40733090719352177],
791
+ [0.56974431743975207, 0.43025568256024799]]])
792
+ assert_array_almost_equal(actual, desired, decimal=15)
793
+ bad_alpha = np.array([5.4e-01, -1.0e-16])
794
+ assert_raises(ValueError, random.dirichlet, bad_alpha)
795
+
796
+ random.seed(self.seed)
797
+ alpha = np.array([51.72840233779265162, 39.74494232180943953])
798
+ actual = random.dirichlet(alpha)
799
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
800
+
801
+ def test_dirichlet_size(self):
802
+ # gh-3173
803
+ p = np.array([51.72840233779265162, 39.74494232180943953])
804
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
805
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
806
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
807
+ assert_equal(random.dirichlet(p, [2, 2]).shape, (2, 2, 2))
808
+ assert_equal(random.dirichlet(p, (2, 2)).shape, (2, 2, 2))
809
+ assert_equal(random.dirichlet(p, np.array((2, 2))).shape, (2, 2, 2))
810
+
811
+ assert_raises(TypeError, random.dirichlet, p, float(1))
812
+
813
+ def test_dirichlet_bad_alpha(self):
814
+ # gh-2089
815
+ alpha = np.array([5.4e-01, -1.0e-16])
816
+ assert_raises(ValueError, random.dirichlet, alpha)
817
+
818
+ def test_dirichlet_alpha_non_contiguous(self):
819
+ a = np.array([51.72840233779265162, -1.0, 39.74494232180943953])
820
+ alpha = a[::2]
821
+ random.seed(self.seed)
822
+ non_contig = random.dirichlet(alpha, size=(3, 2))
823
+ random.seed(self.seed)
824
+ contig = random.dirichlet(np.ascontiguousarray(alpha),
825
+ size=(3, 2))
826
+ assert_array_almost_equal(non_contig, contig)
827
+
828
+ def test_exponential(self):
829
+ random.seed(self.seed)
830
+ actual = random.exponential(1.1234, size=(3, 2))
831
+ desired = np.array([[1.08342649775011624, 1.00607889924557314],
832
+ [2.46628830085216721, 2.49668106809923884],
833
+ [0.68717433461363442, 1.69175666993575979]])
834
+ assert_array_almost_equal(actual, desired, decimal=15)
835
+
836
+ def test_exponential_0(self):
837
+ assert_equal(random.exponential(scale=0), 0)
838
+ assert_raises(ValueError, random.exponential, scale=-0.)
839
+
840
+ def test_f(self):
841
+ random.seed(self.seed)
842
+ actual = random.f(12, 77, size=(3, 2))
843
+ desired = np.array([[1.21975394418575878, 1.75135759791559775],
844
+ [1.44803115017146489, 1.22108959480396262],
845
+ [1.02176975757740629, 1.34431827623300415]])
846
+ assert_array_almost_equal(actual, desired, decimal=15)
847
+
848
+ def test_gamma(self):
849
+ random.seed(self.seed)
850
+ actual = random.gamma(5, 3, size=(3, 2))
851
+ desired = np.array([[24.60509188649287182, 28.54993563207210627],
852
+ [26.13476110204064184, 12.56988482927716078],
853
+ [31.71863275789960568, 33.30143302795922011]])
854
+ assert_array_almost_equal(actual, desired, decimal=14)
855
+
856
+ def test_gamma_0(self):
857
+ assert_equal(random.gamma(shape=0, scale=0), 0)
858
+ assert_raises(ValueError, random.gamma, shape=-0., scale=-0.)
859
+
860
+ def test_geometric(self):
861
+ random.seed(self.seed)
862
+ actual = random.geometric(.123456789, size=(3, 2))
863
+ desired = np.array([[8, 7],
864
+ [17, 17],
865
+ [5, 12]])
866
+ assert_array_equal(actual, desired)
867
+
868
+ def test_geometric_exceptions(self):
869
+ assert_raises(ValueError, random.geometric, 1.1)
870
+ assert_raises(ValueError, random.geometric, [1.1] * 10)
871
+ assert_raises(ValueError, random.geometric, -0.1)
872
+ assert_raises(ValueError, random.geometric, [-0.1] * 10)
873
+ with suppress_warnings() as sup:
874
+ sup.record(RuntimeWarning)
875
+ assert_raises(ValueError, random.geometric, np.nan)
876
+ assert_raises(ValueError, random.geometric, [np.nan] * 10)
877
+
878
+ def test_gumbel(self):
879
+ random.seed(self.seed)
880
+ actual = random.gumbel(loc=.123456789, scale=2.0, size=(3, 2))
881
+ desired = np.array([[0.19591898743416816, 0.34405539668096674],
882
+ [-1.4492522252274278, -1.47374816298446865],
883
+ [1.10651090478803416, -0.69535848626236174]])
884
+ assert_array_almost_equal(actual, desired, decimal=15)
885
+
886
+ def test_gumbel_0(self):
887
+ assert_equal(random.gumbel(scale=0), 0)
888
+ assert_raises(ValueError, random.gumbel, scale=-0.)
889
+
890
+ def test_hypergeometric(self):
891
+ random.seed(self.seed)
892
+ actual = random.hypergeometric(10.1, 5.5, 14, size=(3, 2))
893
+ desired = np.array([[10, 10],
894
+ [10, 10],
895
+ [9, 9]])
896
+ assert_array_equal(actual, desired)
897
+
898
+ # Test nbad = 0
899
+ actual = random.hypergeometric(5, 0, 3, size=4)
900
+ desired = np.array([3, 3, 3, 3])
901
+ assert_array_equal(actual, desired)
902
+
903
+ actual = random.hypergeometric(15, 0, 12, size=4)
904
+ desired = np.array([12, 12, 12, 12])
905
+ assert_array_equal(actual, desired)
906
+
907
+ # Test ngood = 0
908
+ actual = random.hypergeometric(0, 5, 3, size=4)
909
+ desired = np.array([0, 0, 0, 0])
910
+ assert_array_equal(actual, desired)
911
+
912
+ actual = random.hypergeometric(0, 15, 12, size=4)
913
+ desired = np.array([0, 0, 0, 0])
914
+ assert_array_equal(actual, desired)
915
+
916
+ def test_laplace(self):
917
+ random.seed(self.seed)
918
+ actual = random.laplace(loc=.123456789, scale=2.0, size=(3, 2))
919
+ desired = np.array([[0.66599721112760157, 0.52829452552221945],
920
+ [3.12791959514407125, 3.18202813572992005],
921
+ [-0.05391065675859356, 1.74901336242837324]])
922
+ assert_array_almost_equal(actual, desired, decimal=15)
923
+
924
+ def test_laplace_0(self):
925
+ assert_equal(random.laplace(scale=0), 0)
926
+ assert_raises(ValueError, random.laplace, scale=-0.)
927
+
928
+ def test_logistic(self):
929
+ random.seed(self.seed)
930
+ actual = random.logistic(loc=.123456789, scale=2.0, size=(3, 2))
931
+ desired = np.array([[1.09232835305011444, 0.8648196662399954],
932
+ [4.27818590694950185, 4.33897006346929714],
933
+ [-0.21682183359214885, 2.63373365386060332]])
934
+ assert_array_almost_equal(actual, desired, decimal=15)
935
+
936
+ def test_lognormal(self):
937
+ random.seed(self.seed)
938
+ actual = random.lognormal(mean=.123456789, sigma=2.0, size=(3, 2))
939
+ desired = np.array([[16.50698631688883822, 36.54846706092654784],
940
+ [22.67886599981281748, 0.71617561058995771],
941
+ [65.72798501792723869, 86.84341601437161273]])
942
+ assert_array_almost_equal(actual, desired, decimal=13)
943
+
944
+ def test_lognormal_0(self):
945
+ assert_equal(random.lognormal(sigma=0), 1)
946
+ assert_raises(ValueError, random.lognormal, sigma=-0.)
947
+
948
+ def test_logseries(self):
949
+ random.seed(self.seed)
950
+ actual = random.logseries(p=.923456789, size=(3, 2))
951
+ desired = np.array([[2, 2],
952
+ [6, 17],
953
+ [3, 6]])
954
+ assert_array_equal(actual, desired)
955
+
956
+ def test_logseries_zero(self):
957
+ assert random.logseries(0) == 1
958
+
959
+ @pytest.mark.parametrize("value", [np.nextafter(0., -1), 1., np.nan, 5.])
960
+ def test_logseries_exceptions(self, value):
961
+ with np.errstate(invalid="ignore"):
962
+ with pytest.raises(ValueError):
963
+ random.logseries(value)
964
+ with pytest.raises(ValueError):
965
+ # contiguous path:
966
+ random.logseries(np.array([value] * 10))
967
+ with pytest.raises(ValueError):
968
+ # non-contiguous path:
969
+ random.logseries(np.array([value] * 10)[::2])
970
+
971
+ def test_multinomial(self):
972
+ random.seed(self.seed)
973
+ actual = random.multinomial(20, [1 / 6.] * 6, size=(3, 2))
974
+ desired = np.array([[[4, 3, 5, 4, 2, 2],
975
+ [5, 2, 8, 2, 2, 1]],
976
+ [[3, 4, 3, 6, 0, 4],
977
+ [2, 1, 4, 3, 6, 4]],
978
+ [[4, 4, 2, 5, 2, 3],
979
+ [4, 3, 4, 2, 3, 4]]])
980
+ assert_array_equal(actual, desired)
981
+
982
+ def test_multivariate_normal(self):
983
+ random.seed(self.seed)
984
+ mean = (.123456789, 10)
985
+ cov = [[1, 0], [0, 1]]
986
+ size = (3, 2)
987
+ actual = random.multivariate_normal(mean, cov, size)
988
+ desired = np.array([[[1.463620246718631, 11.73759122771936],
989
+ [1.622445133300628, 9.771356667546383]],
990
+ [[2.154490787682787, 12.170324946056553],
991
+ [1.719909438201865, 9.230548443648306]],
992
+ [[0.689515026297799, 9.880729819607714],
993
+ [-0.023054015651998, 9.201096623542879]]])
994
+
995
+ assert_array_almost_equal(actual, desired, decimal=15)
996
+
997
+ # Check for default size, was raising deprecation warning
998
+ actual = random.multivariate_normal(mean, cov)
999
+ desired = np.array([0.895289569463708, 9.17180864067987])
1000
+ assert_array_almost_equal(actual, desired, decimal=15)
1001
+
1002
+ # Check that non positive-semidefinite covariance warns with
1003
+ # RuntimeWarning
1004
+ mean = [0, 0]
1005
+ cov = [[1, 2], [2, 1]]
1006
+ assert_warns(RuntimeWarning, random.multivariate_normal, mean, cov)
1007
+
1008
+ # and that it doesn't warn with RuntimeWarning check_valid='ignore'
1009
+ assert_no_warnings(random.multivariate_normal, mean, cov,
1010
+ check_valid='ignore')
1011
+
1012
+ # and that it raises with RuntimeWarning check_valid='raises'
1013
+ assert_raises(ValueError, random.multivariate_normal, mean, cov,
1014
+ check_valid='raise')
1015
+
1016
+ cov = np.array([[1, 0.1], [0.1, 1]], dtype=np.float32)
1017
+ with suppress_warnings() as sup:
1018
+ random.multivariate_normal(mean, cov)
1019
+ w = sup.record(RuntimeWarning)
1020
+ assert len(w) == 0
1021
+
1022
+ mu = np.zeros(2)
1023
+ cov = np.eye(2)
1024
+ assert_raises(ValueError, random.multivariate_normal, mean, cov,
1025
+ check_valid='other')
1026
+ assert_raises(ValueError, random.multivariate_normal,
1027
+ np.zeros((2, 1, 1)), cov)
1028
+ assert_raises(ValueError, random.multivariate_normal,
1029
+ mu, np.empty((3, 2)))
1030
+ assert_raises(ValueError, random.multivariate_normal,
1031
+ mu, np.eye(3))
1032
+
1033
+ def test_negative_binomial(self):
1034
+ random.seed(self.seed)
1035
+ actual = random.negative_binomial(n=100, p=.12345, size=(3, 2))
1036
+ desired = np.array([[848, 841],
1037
+ [892, 611],
1038
+ [779, 647]])
1039
+ assert_array_equal(actual, desired)
1040
+
1041
+ def test_negative_binomial_exceptions(self):
1042
+ with suppress_warnings() as sup:
1043
+ sup.record(RuntimeWarning)
1044
+ assert_raises(ValueError, random.negative_binomial, 100, np.nan)
1045
+ assert_raises(ValueError, random.negative_binomial, 100,
1046
+ [np.nan] * 10)
1047
+
1048
+ def test_noncentral_chisquare(self):
1049
+ random.seed(self.seed)
1050
+ actual = random.noncentral_chisquare(df=5, nonc=5, size=(3, 2))
1051
+ desired = np.array([[23.91905354498517511, 13.35324692733826346],
1052
+ [31.22452661329736401, 16.60047399466177254],
1053
+ [5.03461598262724586, 17.94973089023519464]])
1054
+ assert_array_almost_equal(actual, desired, decimal=14)
1055
+
1056
+ actual = random.noncentral_chisquare(df=.5, nonc=.2, size=(3, 2))
1057
+ desired = np.array([[1.47145377828516666, 0.15052899268012659],
1058
+ [0.00943803056963588, 1.02647251615666169],
1059
+ [0.332334982684171, 0.15451287602753125]])
1060
+ assert_array_almost_equal(actual, desired, decimal=14)
1061
+
1062
+ random.seed(self.seed)
1063
+ actual = random.noncentral_chisquare(df=5, nonc=0, size=(3, 2))
1064
+ desired = np.array([[9.597154162763948, 11.725484450296079],
1065
+ [10.413711048138335, 3.694475922923986],
1066
+ [13.484222138963087, 14.377255424602957]])
1067
+ assert_array_almost_equal(actual, desired, decimal=14)
1068
+
1069
+ def test_noncentral_f(self):
1070
+ random.seed(self.seed)
1071
+ actual = random.noncentral_f(dfnum=5, dfden=2, nonc=1,
1072
+ size=(3, 2))
1073
+ desired = np.array([[1.40598099674926669, 0.34207973179285761],
1074
+ [3.57715069265772545, 7.92632662577829805],
1075
+ [0.43741599463544162, 1.1774208752428319]])
1076
+ assert_array_almost_equal(actual, desired, decimal=14)
1077
+
1078
+ def test_noncentral_f_nan(self):
1079
+ random.seed(self.seed)
1080
+ actual = random.noncentral_f(dfnum=5, dfden=2, nonc=np.nan)
1081
+ assert np.isnan(actual)
1082
+
1083
+ def test_normal(self):
1084
+ random.seed(self.seed)
1085
+ actual = random.normal(loc=.123456789, scale=2.0, size=(3, 2))
1086
+ desired = np.array([[2.80378370443726244, 3.59863924443872163],
1087
+ [3.121433477601256, -0.33382987590723379],
1088
+ [4.18552478636557357, 4.46410668111310471]])
1089
+ assert_array_almost_equal(actual, desired, decimal=15)
1090
+
1091
+ def test_normal_0(self):
1092
+ assert_equal(random.normal(scale=0), 0)
1093
+ assert_raises(ValueError, random.normal, scale=-0.)
1094
+
1095
+ def test_pareto(self):
1096
+ random.seed(self.seed)
1097
+ actual = random.pareto(a=.123456789, size=(3, 2))
1098
+ desired = np.array(
1099
+ [[2.46852460439034849e+03, 1.41286880810518346e+03],
1100
+ [5.28287797029485181e+07, 6.57720981047328785e+07],
1101
+ [1.40840323350391515e+02, 1.98390255135251704e+05]])
1102
+ # For some reason on 32-bit x86 Ubuntu 12.10 the [1, 0] entry in this
1103
+ # matrix differs by 24 nulps. Discussion:
1104
+ # https://mail.python.org/pipermail/numpy-discussion/2012-September/063801.html
1105
+ # Consensus is that this is probably some gcc quirk that affects
1106
+ # rounding but not in any important way, so we just use a looser
1107
+ # tolerance on this test:
1108
+ np.testing.assert_array_almost_equal_nulp(actual, desired, nulp=30)
1109
+
1110
+ def test_poisson(self):
1111
+ random.seed(self.seed)
1112
+ actual = random.poisson(lam=.123456789, size=(3, 2))
1113
+ desired = np.array([[0, 0],
1114
+ [1, 0],
1115
+ [0, 0]])
1116
+ assert_array_equal(actual, desired)
1117
+
1118
+ def test_poisson_exceptions(self):
1119
+ lambig = np.iinfo('l').max
1120
+ lamneg = -1
1121
+ assert_raises(ValueError, random.poisson, lamneg)
1122
+ assert_raises(ValueError, random.poisson, [lamneg] * 10)
1123
+ assert_raises(ValueError, random.poisson, lambig)
1124
+ assert_raises(ValueError, random.poisson, [lambig] * 10)
1125
+ with suppress_warnings() as sup:
1126
+ sup.record(RuntimeWarning)
1127
+ assert_raises(ValueError, random.poisson, np.nan)
1128
+ assert_raises(ValueError, random.poisson, [np.nan] * 10)
1129
+
1130
+ def test_power(self):
1131
+ random.seed(self.seed)
1132
+ actual = random.power(a=.123456789, size=(3, 2))
1133
+ desired = np.array([[0.02048932883240791, 0.01424192241128213],
1134
+ [0.38446073748535298, 0.39499689943484395],
1135
+ [0.00177699707563439, 0.13115505880863756]])
1136
+ assert_array_almost_equal(actual, desired, decimal=15)
1137
+
1138
+ def test_rayleigh(self):
1139
+ random.seed(self.seed)
1140
+ actual = random.rayleigh(scale=10, size=(3, 2))
1141
+ desired = np.array([[13.8882496494248393, 13.383318339044731],
1142
+ [20.95413364294492098, 21.08285015800712614],
1143
+ [11.06066537006854311, 17.35468505778271009]])
1144
+ assert_array_almost_equal(actual, desired, decimal=14)
1145
+
1146
+ def test_rayleigh_0(self):
1147
+ assert_equal(random.rayleigh(scale=0), 0)
1148
+ assert_raises(ValueError, random.rayleigh, scale=-0.)
1149
+
1150
+ def test_standard_cauchy(self):
1151
+ random.seed(self.seed)
1152
+ actual = random.standard_cauchy(size=(3, 2))
1153
+ desired = np.array([[0.77127660196445336, -6.55601161955910605],
1154
+ [0.93582023391158309, -2.07479293013759447],
1155
+ [-4.74601644297011926, 0.18338989290760804]])
1156
+ assert_array_almost_equal(actual, desired, decimal=15)
1157
+
1158
+ def test_standard_exponential(self):
1159
+ random.seed(self.seed)
1160
+ actual = random.standard_exponential(size=(3, 2))
1161
+ desired = np.array([[0.96441739162374596, 0.89556604882105506],
1162
+ [2.1953785836319808, 2.22243285392490542],
1163
+ [0.6116915921431676, 1.50592546727413201]])
1164
+ assert_array_almost_equal(actual, desired, decimal=15)
1165
+
1166
+ def test_standard_gamma(self):
1167
+ random.seed(self.seed)
1168
+ actual = random.standard_gamma(shape=3, size=(3, 2))
1169
+ desired = np.array([[5.50841531318455058, 6.62953470301903103],
1170
+ [5.93988484943779227, 2.31044849402133989],
1171
+ [7.54838614231317084, 8.012756093271868]])
1172
+ assert_array_almost_equal(actual, desired, decimal=14)
1173
+
1174
+ def test_standard_gamma_0(self):
1175
+ assert_equal(random.standard_gamma(shape=0), 0)
1176
+ assert_raises(ValueError, random.standard_gamma, shape=-0.)
1177
+
1178
+ def test_standard_normal(self):
1179
+ random.seed(self.seed)
1180
+ actual = random.standard_normal(size=(3, 2))
1181
+ desired = np.array([[1.34016345771863121, 1.73759122771936081],
1182
+ [1.498988344300628, -0.2286433324536169],
1183
+ [2.031033998682787, 2.17032494605655257]])
1184
+ assert_array_almost_equal(actual, desired, decimal=15)
1185
+
1186
+ def test_randn_singleton(self):
1187
+ random.seed(self.seed)
1188
+ actual = random.randn()
1189
+ desired = np.array(1.34016345771863121)
1190
+ assert_array_almost_equal(actual, desired, decimal=15)
1191
+
1192
+ def test_standard_t(self):
1193
+ random.seed(self.seed)
1194
+ actual = random.standard_t(df=10, size=(3, 2))
1195
+ desired = np.array([[0.97140611862659965, -0.08830486548450577],
1196
+ [1.36311143689505321, -0.55317463909867071],
1197
+ [-0.18473749069684214, 0.61181537341755321]])
1198
+ assert_array_almost_equal(actual, desired, decimal=15)
1199
+
1200
+ def test_triangular(self):
1201
+ random.seed(self.seed)
1202
+ actual = random.triangular(left=5.12, mode=10.23, right=20.34,
1203
+ size=(3, 2))
1204
+ desired = np.array([[12.68117178949215784, 12.4129206149193152],
1205
+ [16.20131377335158263, 16.25692138747600524],
1206
+ [11.20400690911820263, 14.4978144835829923]])
1207
+ assert_array_almost_equal(actual, desired, decimal=14)
1208
+
1209
+ def test_uniform(self):
1210
+ random.seed(self.seed)
1211
+ actual = random.uniform(low=1.23, high=10.54, size=(3, 2))
1212
+ desired = np.array([[6.99097932346268003, 6.73801597444323974],
1213
+ [9.50364421400426274, 9.53130618907631089],
1214
+ [5.48995325769805476, 8.47493103280052118]])
1215
+ assert_array_almost_equal(actual, desired, decimal=15)
1216
+
1217
+ def test_uniform_range_bounds(self):
1218
+ fmin = np.finfo('float').min
1219
+ fmax = np.finfo('float').max
1220
+
1221
+ func = random.uniform
1222
+ assert_raises(OverflowError, func, -np.inf, 0)
1223
+ assert_raises(OverflowError, func, 0, np.inf)
1224
+ assert_raises(OverflowError, func, fmin, fmax)
1225
+ assert_raises(OverflowError, func, [-np.inf], [0])
1226
+ assert_raises(OverflowError, func, [0], [np.inf])
1227
+
1228
+ # (fmax / 1e17) - fmin is within range, so this should not throw
1229
+ # account for i386 extended precision DBL_MAX / 1e17 + DBL_MAX >
1230
+ # DBL_MAX by increasing fmin a bit
1231
+ random.uniform(low=np.nextafter(fmin, 1), high=fmax / 1e17)
1232
+
1233
+ def test_scalar_exception_propagation(self):
1234
+ # Tests that exceptions are correctly propagated in distributions
1235
+ # when called with objects that throw exceptions when converted to
1236
+ # scalars.
1237
+ #
1238
+ # Regression test for gh: 8865
1239
+
1240
+ class ThrowingFloat(np.ndarray):
1241
+ def __float__(self):
1242
+ raise TypeError
1243
+
1244
+ throwing_float = np.array(1.0).view(ThrowingFloat)
1245
+ assert_raises(TypeError, random.uniform, throwing_float,
1246
+ throwing_float)
1247
+
1248
+ class ThrowingInteger(np.ndarray):
1249
+ def __int__(self):
1250
+ raise TypeError
1251
+
1252
+ throwing_int = np.array(1).view(ThrowingInteger)
1253
+ assert_raises(TypeError, random.hypergeometric, throwing_int, 1, 1)
1254
+
1255
+ def test_vonmises(self):
1256
+ random.seed(self.seed)
1257
+ actual = random.vonmises(mu=1.23, kappa=1.54, size=(3, 2))
1258
+ desired = np.array([[2.28567572673902042, 2.89163838442285037],
1259
+ [0.38198375564286025, 2.57638023113890746],
1260
+ [1.19153771588353052, 1.83509849681825354]])
1261
+ assert_array_almost_equal(actual, desired, decimal=15)
1262
+
1263
+ def test_vonmises_small(self):
1264
+ # check infinite loop, gh-4720
1265
+ random.seed(self.seed)
1266
+ r = random.vonmises(mu=0., kappa=1.1e-8, size=10**6)
1267
+ assert_(np.isfinite(r).all())
1268
+
1269
+ def test_vonmises_large(self):
1270
+ # guard against changes in RandomState when Generator is fixed
1271
+ random.seed(self.seed)
1272
+ actual = random.vonmises(mu=0., kappa=1e7, size=3)
1273
+ desired = np.array([4.634253748521111e-04,
1274
+ 3.558873596114509e-04,
1275
+ -2.337119622577433e-04])
1276
+ assert_array_almost_equal(actual, desired, decimal=8)
1277
+
1278
+ def test_vonmises_nan(self):
1279
+ random.seed(self.seed)
1280
+ r = random.vonmises(mu=0., kappa=np.nan)
1281
+ assert_(np.isnan(r))
1282
+
1283
+ def test_wald(self):
1284
+ random.seed(self.seed)
1285
+ actual = random.wald(mean=1.23, scale=1.54, size=(3, 2))
1286
+ desired = np.array([[3.82935265715889983, 5.13125249184285526],
1287
+ [0.35045403618358717, 1.50832396872003538],
1288
+ [0.24124319895843183, 0.22031101461955038]])
1289
+ assert_array_almost_equal(actual, desired, decimal=14)
1290
+
1291
+ def test_weibull(self):
1292
+ random.seed(self.seed)
1293
+ actual = random.weibull(a=1.23, size=(3, 2))
1294
+ desired = np.array([[0.97097342648766727, 0.91422896443565516],
1295
+ [1.89517770034962929, 1.91414357960479564],
1296
+ [0.67057783752390987, 1.39494046635066793]])
1297
+ assert_array_almost_equal(actual, desired, decimal=15)
1298
+
1299
+ def test_weibull_0(self):
1300
+ random.seed(self.seed)
1301
+ assert_equal(random.weibull(a=0, size=12), np.zeros(12))
1302
+ assert_raises(ValueError, random.weibull, a=-0.)
1303
+
1304
+ def test_zipf(self):
1305
+ random.seed(self.seed)
1306
+ actual = random.zipf(a=1.23, size=(3, 2))
1307
+ desired = np.array([[66, 29],
1308
+ [1, 1],
1309
+ [3, 13]])
1310
+ assert_array_equal(actual, desired)
1311
+
1312
+
1313
+ class TestBroadcast:
1314
+ # tests that functions that broadcast behave
1315
+ # correctly when presented with non-scalar arguments
1316
+ def setup_method(self):
1317
+ self.seed = 123456789
1318
+
1319
+ def set_seed(self):
1320
+ random.seed(self.seed)
1321
+
1322
+ def test_uniform(self):
1323
+ low = [0]
1324
+ high = [1]
1325
+ uniform = random.uniform
1326
+ desired = np.array([0.53283302478975902,
1327
+ 0.53413660089041659,
1328
+ 0.50955303552646702])
1329
+
1330
+ self.set_seed()
1331
+ actual = uniform(low * 3, high)
1332
+ assert_array_almost_equal(actual, desired, decimal=14)
1333
+
1334
+ self.set_seed()
1335
+ actual = uniform(low, high * 3)
1336
+ assert_array_almost_equal(actual, desired, decimal=14)
1337
+
1338
+ def test_normal(self):
1339
+ loc = [0]
1340
+ scale = [1]
1341
+ bad_scale = [-1]
1342
+ normal = random.normal
1343
+ desired = np.array([2.2129019979039612,
1344
+ 2.1283977976520019,
1345
+ 1.8417114045748335])
1346
+
1347
+ self.set_seed()
1348
+ actual = normal(loc * 3, scale)
1349
+ assert_array_almost_equal(actual, desired, decimal=14)
1350
+ assert_raises(ValueError, normal, loc * 3, bad_scale)
1351
+
1352
+ self.set_seed()
1353
+ actual = normal(loc, scale * 3)
1354
+ assert_array_almost_equal(actual, desired, decimal=14)
1355
+ assert_raises(ValueError, normal, loc, bad_scale * 3)
1356
+
1357
+ def test_beta(self):
1358
+ a = [1]
1359
+ b = [2]
1360
+ bad_a = [-1]
1361
+ bad_b = [-2]
1362
+ beta = random.beta
1363
+ desired = np.array([0.19843558305989056,
1364
+ 0.075230336409423643,
1365
+ 0.24976865978980844])
1366
+
1367
+ self.set_seed()
1368
+ actual = beta(a * 3, b)
1369
+ assert_array_almost_equal(actual, desired, decimal=14)
1370
+ assert_raises(ValueError, beta, bad_a * 3, b)
1371
+ assert_raises(ValueError, beta, a * 3, bad_b)
1372
+
1373
+ self.set_seed()
1374
+ actual = beta(a, b * 3)
1375
+ assert_array_almost_equal(actual, desired, decimal=14)
1376
+ assert_raises(ValueError, beta, bad_a, b * 3)
1377
+ assert_raises(ValueError, beta, a, bad_b * 3)
1378
+
1379
+ def test_exponential(self):
1380
+ scale = [1]
1381
+ bad_scale = [-1]
1382
+ exponential = random.exponential
1383
+ desired = np.array([0.76106853658845242,
1384
+ 0.76386282278691653,
1385
+ 0.71243813125891797])
1386
+
1387
+ self.set_seed()
1388
+ actual = exponential(scale * 3)
1389
+ assert_array_almost_equal(actual, desired, decimal=14)
1390
+ assert_raises(ValueError, exponential, bad_scale * 3)
1391
+
1392
+ def test_standard_gamma(self):
1393
+ shape = [1]
1394
+ bad_shape = [-1]
1395
+ std_gamma = random.standard_gamma
1396
+ desired = np.array([0.76106853658845242,
1397
+ 0.76386282278691653,
1398
+ 0.71243813125891797])
1399
+
1400
+ self.set_seed()
1401
+ actual = std_gamma(shape * 3)
1402
+ assert_array_almost_equal(actual, desired, decimal=14)
1403
+ assert_raises(ValueError, std_gamma, bad_shape * 3)
1404
+
1405
+ def test_gamma(self):
1406
+ shape = [1]
1407
+ scale = [2]
1408
+ bad_shape = [-1]
1409
+ bad_scale = [-2]
1410
+ gamma = random.gamma
1411
+ desired = np.array([1.5221370731769048,
1412
+ 1.5277256455738331,
1413
+ 1.4248762625178359])
1414
+
1415
+ self.set_seed()
1416
+ actual = gamma(shape * 3, scale)
1417
+ assert_array_almost_equal(actual, desired, decimal=14)
1418
+ assert_raises(ValueError, gamma, bad_shape * 3, scale)
1419
+ assert_raises(ValueError, gamma, shape * 3, bad_scale)
1420
+
1421
+ self.set_seed()
1422
+ actual = gamma(shape, scale * 3)
1423
+ assert_array_almost_equal(actual, desired, decimal=14)
1424
+ assert_raises(ValueError, gamma, bad_shape, scale * 3)
1425
+ assert_raises(ValueError, gamma, shape, bad_scale * 3)
1426
+
1427
+ def test_f(self):
1428
+ dfnum = [1]
1429
+ dfden = [2]
1430
+ bad_dfnum = [-1]
1431
+ bad_dfden = [-2]
1432
+ f = random.f
1433
+ desired = np.array([0.80038951638264799,
1434
+ 0.86768719635363512,
1435
+ 2.7251095168386801])
1436
+
1437
+ self.set_seed()
1438
+ actual = f(dfnum * 3, dfden)
1439
+ assert_array_almost_equal(actual, desired, decimal=14)
1440
+ assert_raises(ValueError, f, bad_dfnum * 3, dfden)
1441
+ assert_raises(ValueError, f, dfnum * 3, bad_dfden)
1442
+
1443
+ self.set_seed()
1444
+ actual = f(dfnum, dfden * 3)
1445
+ assert_array_almost_equal(actual, desired, decimal=14)
1446
+ assert_raises(ValueError, f, bad_dfnum, dfden * 3)
1447
+ assert_raises(ValueError, f, dfnum, bad_dfden * 3)
1448
+
1449
+ def test_noncentral_f(self):
1450
+ dfnum = [2]
1451
+ dfden = [3]
1452
+ nonc = [4]
1453
+ bad_dfnum = [0]
1454
+ bad_dfden = [-1]
1455
+ bad_nonc = [-2]
1456
+ nonc_f = random.noncentral_f
1457
+ desired = np.array([9.1393943263705211,
1458
+ 13.025456344595602,
1459
+ 8.8018098359100545])
1460
+
1461
+ self.set_seed()
1462
+ actual = nonc_f(dfnum * 3, dfden, nonc)
1463
+ assert_array_almost_equal(actual, desired, decimal=14)
1464
+ assert np.all(np.isnan(nonc_f(dfnum, dfden, [np.nan] * 3)))
1465
+
1466
+ assert_raises(ValueError, nonc_f, bad_dfnum * 3, dfden, nonc)
1467
+ assert_raises(ValueError, nonc_f, dfnum * 3, bad_dfden, nonc)
1468
+ assert_raises(ValueError, nonc_f, dfnum * 3, dfden, bad_nonc)
1469
+
1470
+ self.set_seed()
1471
+ actual = nonc_f(dfnum, dfden * 3, nonc)
1472
+ assert_array_almost_equal(actual, desired, decimal=14)
1473
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden * 3, nonc)
1474
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden * 3, nonc)
1475
+ assert_raises(ValueError, nonc_f, dfnum, dfden * 3, bad_nonc)
1476
+
1477
+ self.set_seed()
1478
+ actual = nonc_f(dfnum, dfden, nonc * 3)
1479
+ assert_array_almost_equal(actual, desired, decimal=14)
1480
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden, nonc * 3)
1481
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden, nonc * 3)
1482
+ assert_raises(ValueError, nonc_f, dfnum, dfden, bad_nonc * 3)
1483
+
1484
+ def test_noncentral_f_small_df(self):
1485
+ self.set_seed()
1486
+ desired = np.array([6.869638627492048, 0.785880199263955])
1487
+ actual = random.noncentral_f(0.9, 0.9, 2, size=2)
1488
+ assert_array_almost_equal(actual, desired, decimal=14)
1489
+
1490
+ def test_chisquare(self):
1491
+ df = [1]
1492
+ bad_df = [-1]
1493
+ chisquare = random.chisquare
1494
+ desired = np.array([0.57022801133088286,
1495
+ 0.51947702108840776,
1496
+ 0.1320969254923558])
1497
+
1498
+ self.set_seed()
1499
+ actual = chisquare(df * 3)
1500
+ assert_array_almost_equal(actual, desired, decimal=14)
1501
+ assert_raises(ValueError, chisquare, bad_df * 3)
1502
+
1503
+ def test_noncentral_chisquare(self):
1504
+ df = [1]
1505
+ nonc = [2]
1506
+ bad_df = [-1]
1507
+ bad_nonc = [-2]
1508
+ nonc_chi = random.noncentral_chisquare
1509
+ desired = np.array([9.0015599467913763,
1510
+ 4.5804135049718742,
1511
+ 6.0872302432834564])
1512
+
1513
+ self.set_seed()
1514
+ actual = nonc_chi(df * 3, nonc)
1515
+ assert_array_almost_equal(actual, desired, decimal=14)
1516
+ assert_raises(ValueError, nonc_chi, bad_df * 3, nonc)
1517
+ assert_raises(ValueError, nonc_chi, df * 3, bad_nonc)
1518
+
1519
+ self.set_seed()
1520
+ actual = nonc_chi(df, nonc * 3)
1521
+ assert_array_almost_equal(actual, desired, decimal=14)
1522
+ assert_raises(ValueError, nonc_chi, bad_df, nonc * 3)
1523
+ assert_raises(ValueError, nonc_chi, df, bad_nonc * 3)
1524
+
1525
+ def test_standard_t(self):
1526
+ df = [1]
1527
+ bad_df = [-1]
1528
+ t = random.standard_t
1529
+ desired = np.array([3.0702872575217643,
1530
+ 5.8560725167361607,
1531
+ 1.0274791436474273])
1532
+
1533
+ self.set_seed()
1534
+ actual = t(df * 3)
1535
+ assert_array_almost_equal(actual, desired, decimal=14)
1536
+ assert_raises(ValueError, t, bad_df * 3)
1537
+ assert_raises(ValueError, random.standard_t, bad_df * 3)
1538
+
1539
+ def test_vonmises(self):
1540
+ mu = [2]
1541
+ kappa = [1]
1542
+ bad_kappa = [-1]
1543
+ vonmises = random.vonmises
1544
+ desired = np.array([2.9883443664201312,
1545
+ -2.7064099483995943,
1546
+ -1.8672476700665914])
1547
+
1548
+ self.set_seed()
1549
+ actual = vonmises(mu * 3, kappa)
1550
+ assert_array_almost_equal(actual, desired, decimal=14)
1551
+ assert_raises(ValueError, vonmises, mu * 3, bad_kappa)
1552
+
1553
+ self.set_seed()
1554
+ actual = vonmises(mu, kappa * 3)
1555
+ assert_array_almost_equal(actual, desired, decimal=14)
1556
+ assert_raises(ValueError, vonmises, mu, bad_kappa * 3)
1557
+
1558
+ def test_pareto(self):
1559
+ a = [1]
1560
+ bad_a = [-1]
1561
+ pareto = random.pareto
1562
+ desired = np.array([1.1405622680198362,
1563
+ 1.1465519762044529,
1564
+ 1.0389564467453547])
1565
+
1566
+ self.set_seed()
1567
+ actual = pareto(a * 3)
1568
+ assert_array_almost_equal(actual, desired, decimal=14)
1569
+ assert_raises(ValueError, pareto, bad_a * 3)
1570
+ assert_raises(ValueError, random.pareto, bad_a * 3)
1571
+
1572
+ def test_weibull(self):
1573
+ a = [1]
1574
+ bad_a = [-1]
1575
+ weibull = random.weibull
1576
+ desired = np.array([0.76106853658845242,
1577
+ 0.76386282278691653,
1578
+ 0.71243813125891797])
1579
+
1580
+ self.set_seed()
1581
+ actual = weibull(a * 3)
1582
+ assert_array_almost_equal(actual, desired, decimal=14)
1583
+ assert_raises(ValueError, weibull, bad_a * 3)
1584
+ assert_raises(ValueError, random.weibull, bad_a * 3)
1585
+
1586
+ def test_power(self):
1587
+ a = [1]
1588
+ bad_a = [-1]
1589
+ power = random.power
1590
+ desired = np.array([0.53283302478975902,
1591
+ 0.53413660089041659,
1592
+ 0.50955303552646702])
1593
+
1594
+ self.set_seed()
1595
+ actual = power(a * 3)
1596
+ assert_array_almost_equal(actual, desired, decimal=14)
1597
+ assert_raises(ValueError, power, bad_a * 3)
1598
+ assert_raises(ValueError, random.power, bad_a * 3)
1599
+
1600
+ def test_laplace(self):
1601
+ loc = [0]
1602
+ scale = [1]
1603
+ bad_scale = [-1]
1604
+ laplace = random.laplace
1605
+ desired = np.array([0.067921356028507157,
1606
+ 0.070715642226971326,
1607
+ 0.019290950698972624])
1608
+
1609
+ self.set_seed()
1610
+ actual = laplace(loc * 3, scale)
1611
+ assert_array_almost_equal(actual, desired, decimal=14)
1612
+ assert_raises(ValueError, laplace, loc * 3, bad_scale)
1613
+
1614
+ self.set_seed()
1615
+ actual = laplace(loc, scale * 3)
1616
+ assert_array_almost_equal(actual, desired, decimal=14)
1617
+ assert_raises(ValueError, laplace, loc, bad_scale * 3)
1618
+
1619
+ def test_gumbel(self):
1620
+ loc = [0]
1621
+ scale = [1]
1622
+ bad_scale = [-1]
1623
+ gumbel = random.gumbel
1624
+ desired = np.array([0.2730318639556768,
1625
+ 0.26936705726291116,
1626
+ 0.33906220393037939])
1627
+
1628
+ self.set_seed()
1629
+ actual = gumbel(loc * 3, scale)
1630
+ assert_array_almost_equal(actual, desired, decimal=14)
1631
+ assert_raises(ValueError, gumbel, loc * 3, bad_scale)
1632
+
1633
+ self.set_seed()
1634
+ actual = gumbel(loc, scale * 3)
1635
+ assert_array_almost_equal(actual, desired, decimal=14)
1636
+ assert_raises(ValueError, gumbel, loc, bad_scale * 3)
1637
+
1638
+ def test_logistic(self):
1639
+ loc = [0]
1640
+ scale = [1]
1641
+ bad_scale = [-1]
1642
+ logistic = random.logistic
1643
+ desired = np.array([0.13152135837586171,
1644
+ 0.13675915696285773,
1645
+ 0.038216792802833396])
1646
+
1647
+ self.set_seed()
1648
+ actual = logistic(loc * 3, scale)
1649
+ assert_array_almost_equal(actual, desired, decimal=14)
1650
+ assert_raises(ValueError, logistic, loc * 3, bad_scale)
1651
+
1652
+ self.set_seed()
1653
+ actual = logistic(loc, scale * 3)
1654
+ assert_array_almost_equal(actual, desired, decimal=14)
1655
+ assert_raises(ValueError, logistic, loc, bad_scale * 3)
1656
+ assert_equal(random.logistic(1.0, 0.0), 1.0)
1657
+
1658
+ def test_lognormal(self):
1659
+ mean = [0]
1660
+ sigma = [1]
1661
+ bad_sigma = [-1]
1662
+ lognormal = random.lognormal
1663
+ desired = np.array([9.1422086044848427,
1664
+ 8.4013952870126261,
1665
+ 6.3073234116578671])
1666
+
1667
+ self.set_seed()
1668
+ actual = lognormal(mean * 3, sigma)
1669
+ assert_array_almost_equal(actual, desired, decimal=14)
1670
+ assert_raises(ValueError, lognormal, mean * 3, bad_sigma)
1671
+ assert_raises(ValueError, random.lognormal, mean * 3, bad_sigma)
1672
+
1673
+ self.set_seed()
1674
+ actual = lognormal(mean, sigma * 3)
1675
+ assert_array_almost_equal(actual, desired, decimal=14)
1676
+ assert_raises(ValueError, lognormal, mean, bad_sigma * 3)
1677
+ assert_raises(ValueError, random.lognormal, mean, bad_sigma * 3)
1678
+
1679
+ def test_rayleigh(self):
1680
+ scale = [1]
1681
+ bad_scale = [-1]
1682
+ rayleigh = random.rayleigh
1683
+ desired = np.array([1.2337491937897689,
1684
+ 1.2360119924878694,
1685
+ 1.1936818095781789])
1686
+
1687
+ self.set_seed()
1688
+ actual = rayleigh(scale * 3)
1689
+ assert_array_almost_equal(actual, desired, decimal=14)
1690
+ assert_raises(ValueError, rayleigh, bad_scale * 3)
1691
+
1692
+ def test_wald(self):
1693
+ mean = [0.5]
1694
+ scale = [1]
1695
+ bad_mean = [0]
1696
+ bad_scale = [-2]
1697
+ wald = random.wald
1698
+ desired = np.array([0.11873681120271318,
1699
+ 0.12450084820795027,
1700
+ 0.9096122728408238])
1701
+
1702
+ self.set_seed()
1703
+ actual = wald(mean * 3, scale)
1704
+ assert_array_almost_equal(actual, desired, decimal=14)
1705
+ assert_raises(ValueError, wald, bad_mean * 3, scale)
1706
+ assert_raises(ValueError, wald, mean * 3, bad_scale)
1707
+ assert_raises(ValueError, random.wald, bad_mean * 3, scale)
1708
+ assert_raises(ValueError, random.wald, mean * 3, bad_scale)
1709
+
1710
+ self.set_seed()
1711
+ actual = wald(mean, scale * 3)
1712
+ assert_array_almost_equal(actual, desired, decimal=14)
1713
+ assert_raises(ValueError, wald, bad_mean, scale * 3)
1714
+ assert_raises(ValueError, wald, mean, bad_scale * 3)
1715
+ assert_raises(ValueError, wald, 0.0, 1)
1716
+ assert_raises(ValueError, wald, 0.5, 0.0)
1717
+
1718
+ def test_triangular(self):
1719
+ left = [1]
1720
+ right = [3]
1721
+ mode = [2]
1722
+ bad_left_one = [3]
1723
+ bad_mode_one = [4]
1724
+ bad_left_two, bad_mode_two = right * 2
1725
+ triangular = random.triangular
1726
+ desired = np.array([2.03339048710429,
1727
+ 2.0347400359389356,
1728
+ 2.0095991069536208])
1729
+
1730
+ self.set_seed()
1731
+ actual = triangular(left * 3, mode, right)
1732
+ assert_array_almost_equal(actual, desired, decimal=14)
1733
+ assert_raises(ValueError, triangular, bad_left_one * 3, mode, right)
1734
+ assert_raises(ValueError, triangular, left * 3, bad_mode_one, right)
1735
+ assert_raises(ValueError, triangular, bad_left_two * 3, bad_mode_two,
1736
+ right)
1737
+
1738
+ self.set_seed()
1739
+ actual = triangular(left, mode * 3, right)
1740
+ assert_array_almost_equal(actual, desired, decimal=14)
1741
+ assert_raises(ValueError, triangular, bad_left_one, mode * 3, right)
1742
+ assert_raises(ValueError, triangular, left, bad_mode_one * 3, right)
1743
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two * 3,
1744
+ right)
1745
+
1746
+ self.set_seed()
1747
+ actual = triangular(left, mode, right * 3)
1748
+ assert_array_almost_equal(actual, desired, decimal=14)
1749
+ assert_raises(ValueError, triangular, bad_left_one, mode, right * 3)
1750
+ assert_raises(ValueError, triangular, left, bad_mode_one, right * 3)
1751
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two,
1752
+ right * 3)
1753
+
1754
+ assert_raises(ValueError, triangular, 10., 0., 20.)
1755
+ assert_raises(ValueError, triangular, 10., 25., 20.)
1756
+ assert_raises(ValueError, triangular, 10., 10., 10.)
1757
+
1758
+ def test_binomial(self):
1759
+ n = [1]
1760
+ p = [0.5]
1761
+ bad_n = [-1]
1762
+ bad_p_one = [-1]
1763
+ bad_p_two = [1.5]
1764
+ binom = random.binomial
1765
+ desired = np.array([1, 1, 1])
1766
+
1767
+ self.set_seed()
1768
+ actual = binom(n * 3, p)
1769
+ assert_array_equal(actual, desired)
1770
+ assert_raises(ValueError, binom, bad_n * 3, p)
1771
+ assert_raises(ValueError, binom, n * 3, bad_p_one)
1772
+ assert_raises(ValueError, binom, n * 3, bad_p_two)
1773
+
1774
+ self.set_seed()
1775
+ actual = binom(n, p * 3)
1776
+ assert_array_equal(actual, desired)
1777
+ assert_raises(ValueError, binom, bad_n, p * 3)
1778
+ assert_raises(ValueError, binom, n, bad_p_one * 3)
1779
+ assert_raises(ValueError, binom, n, bad_p_two * 3)
1780
+
1781
+ def test_negative_binomial(self):
1782
+ n = [1]
1783
+ p = [0.5]
1784
+ bad_n = [-1]
1785
+ bad_p_one = [-1]
1786
+ bad_p_two = [1.5]
1787
+ neg_binom = random.negative_binomial
1788
+ desired = np.array([1, 0, 1])
1789
+
1790
+ self.set_seed()
1791
+ actual = neg_binom(n * 3, p)
1792
+ assert_array_equal(actual, desired)
1793
+ assert_raises(ValueError, neg_binom, bad_n * 3, p)
1794
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_one)
1795
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_two)
1796
+
1797
+ self.set_seed()
1798
+ actual = neg_binom(n, p * 3)
1799
+ assert_array_equal(actual, desired)
1800
+ assert_raises(ValueError, neg_binom, bad_n, p * 3)
1801
+ assert_raises(ValueError, neg_binom, n, bad_p_one * 3)
1802
+ assert_raises(ValueError, neg_binom, n, bad_p_two * 3)
1803
+
1804
+ def test_poisson(self):
1805
+ max_lam = random.RandomState()._poisson_lam_max
1806
+
1807
+ lam = [1]
1808
+ bad_lam_one = [-1]
1809
+ bad_lam_two = [max_lam * 2]
1810
+ poisson = random.poisson
1811
+ desired = np.array([1, 1, 0])
1812
+
1813
+ self.set_seed()
1814
+ actual = poisson(lam * 3)
1815
+ assert_array_equal(actual, desired)
1816
+ assert_raises(ValueError, poisson, bad_lam_one * 3)
1817
+ assert_raises(ValueError, poisson, bad_lam_two * 3)
1818
+
1819
+ def test_zipf(self):
1820
+ a = [2]
1821
+ bad_a = [0]
1822
+ zipf = random.zipf
1823
+ desired = np.array([2, 2, 1])
1824
+
1825
+ self.set_seed()
1826
+ actual = zipf(a * 3)
1827
+ assert_array_equal(actual, desired)
1828
+ assert_raises(ValueError, zipf, bad_a * 3)
1829
+ with np.errstate(invalid='ignore'):
1830
+ assert_raises(ValueError, zipf, np.nan)
1831
+ assert_raises(ValueError, zipf, [0, 0, np.nan])
1832
+
1833
+ def test_geometric(self):
1834
+ p = [0.5]
1835
+ bad_p_one = [-1]
1836
+ bad_p_two = [1.5]
1837
+ geom = random.geometric
1838
+ desired = np.array([2, 2, 2])
1839
+
1840
+ self.set_seed()
1841
+ actual = geom(p * 3)
1842
+ assert_array_equal(actual, desired)
1843
+ assert_raises(ValueError, geom, bad_p_one * 3)
1844
+ assert_raises(ValueError, geom, bad_p_two * 3)
1845
+
1846
+ def test_hypergeometric(self):
1847
+ ngood = [1]
1848
+ nbad = [2]
1849
+ nsample = [2]
1850
+ bad_ngood = [-1]
1851
+ bad_nbad = [-2]
1852
+ bad_nsample_one = [0]
1853
+ bad_nsample_two = [4]
1854
+ hypergeom = random.hypergeometric
1855
+ desired = np.array([1, 1, 1])
1856
+
1857
+ self.set_seed()
1858
+ actual = hypergeom(ngood * 3, nbad, nsample)
1859
+ assert_array_equal(actual, desired)
1860
+ assert_raises(ValueError, hypergeom, bad_ngood * 3, nbad, nsample)
1861
+ assert_raises(ValueError, hypergeom, ngood * 3, bad_nbad, nsample)
1862
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_one)
1863
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_two)
1864
+
1865
+ self.set_seed()
1866
+ actual = hypergeom(ngood, nbad * 3, nsample)
1867
+ assert_array_equal(actual, desired)
1868
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad * 3, nsample)
1869
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad * 3, nsample)
1870
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_one)
1871
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_two)
1872
+
1873
+ self.set_seed()
1874
+ actual = hypergeom(ngood, nbad, nsample * 3)
1875
+ assert_array_equal(actual, desired)
1876
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad, nsample * 3)
1877
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad, nsample * 3)
1878
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_one * 3)
1879
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_two * 3)
1880
+
1881
+ assert_raises(ValueError, hypergeom, -1, 10, 20)
1882
+ assert_raises(ValueError, hypergeom, 10, -1, 20)
1883
+ assert_raises(ValueError, hypergeom, 10, 10, 0)
1884
+ assert_raises(ValueError, hypergeom, 10, 10, 25)
1885
+
1886
+ def test_logseries(self):
1887
+ p = [0.5]
1888
+ bad_p_one = [2]
1889
+ bad_p_two = [-1]
1890
+ logseries = random.logseries
1891
+ desired = np.array([1, 1, 1])
1892
+
1893
+ self.set_seed()
1894
+ actual = logseries(p * 3)
1895
+ assert_array_equal(actual, desired)
1896
+ assert_raises(ValueError, logseries, bad_p_one * 3)
1897
+ assert_raises(ValueError, logseries, bad_p_two * 3)
1898
+
1899
+
1900
+ @pytest.mark.skipif(IS_WASM, reason="can't start thread")
1901
+ class TestThread:
1902
+ # make sure each state produces the same sequence even in threads
1903
+ def setup_method(self):
1904
+ self.seeds = range(4)
1905
+
1906
+ def check_function(self, function, sz):
1907
+ from threading import Thread
1908
+
1909
+ out1 = np.empty((len(self.seeds),) + sz)
1910
+ out2 = np.empty((len(self.seeds),) + sz)
1911
+
1912
+ # threaded generation
1913
+ t = [Thread(target=function, args=(random.RandomState(s), o))
1914
+ for s, o in zip(self.seeds, out1)]
1915
+ [x.start() for x in t]
1916
+ [x.join() for x in t]
1917
+
1918
+ # the same serial
1919
+ for s, o in zip(self.seeds, out2):
1920
+ function(random.RandomState(s), o)
1921
+
1922
+ # these platforms change x87 fpu precision mode in threads
1923
+ if np.intp().dtype.itemsize == 4 and sys.platform == "win32":
1924
+ assert_array_almost_equal(out1, out2)
1925
+ else:
1926
+ assert_array_equal(out1, out2)
1927
+
1928
+ def test_normal(self):
1929
+ def gen_random(state, out):
1930
+ out[...] = state.normal(size=10000)
1931
+
1932
+ self.check_function(gen_random, sz=(10000,))
1933
+
1934
+ def test_exp(self):
1935
+ def gen_random(state, out):
1936
+ out[...] = state.exponential(scale=np.ones((100, 1000)))
1937
+
1938
+ self.check_function(gen_random, sz=(100, 1000))
1939
+
1940
+ def test_multinomial(self):
1941
+ def gen_random(state, out):
1942
+ out[...] = state.multinomial(10, [1 / 6.] * 6, size=10000)
1943
+
1944
+ self.check_function(gen_random, sz=(10000, 6))
1945
+
1946
+
1947
+ # See Issue #4263
1948
+ class TestSingleEltArrayInput:
1949
+ def setup_method(self):
1950
+ self.argOne = np.array([2])
1951
+ self.argTwo = np.array([3])
1952
+ self.argThree = np.array([4])
1953
+ self.tgtShape = (1,)
1954
+
1955
+ def test_one_arg_funcs(self):
1956
+ funcs = (random.exponential, random.standard_gamma,
1957
+ random.chisquare, random.standard_t,
1958
+ random.pareto, random.weibull,
1959
+ random.power, random.rayleigh,
1960
+ random.poisson, random.zipf,
1961
+ random.geometric, random.logseries)
1962
+
1963
+ probfuncs = (random.geometric, random.logseries)
1964
+
1965
+ for func in funcs:
1966
+ if func in probfuncs: # p < 1.0
1967
+ out = func(np.array([0.5]))
1968
+
1969
+ else:
1970
+ out = func(self.argOne)
1971
+
1972
+ assert_equal(out.shape, self.tgtShape)
1973
+
1974
+ def test_two_arg_funcs(self):
1975
+ funcs = (random.uniform, random.normal,
1976
+ random.beta, random.gamma,
1977
+ random.f, random.noncentral_chisquare,
1978
+ random.vonmises, random.laplace,
1979
+ random.gumbel, random.logistic,
1980
+ random.lognormal, random.wald,
1981
+ random.binomial, random.negative_binomial)
1982
+
1983
+ probfuncs = (random.binomial, random.negative_binomial)
1984
+
1985
+ for func in funcs:
1986
+ if func in probfuncs: # p <= 1
1987
+ argTwo = np.array([0.5])
1988
+
1989
+ else:
1990
+ argTwo = self.argTwo
1991
+
1992
+ out = func(self.argOne, argTwo)
1993
+ assert_equal(out.shape, self.tgtShape)
1994
+
1995
+ out = func(self.argOne[0], argTwo)
1996
+ assert_equal(out.shape, self.tgtShape)
1997
+
1998
+ out = func(self.argOne, argTwo[0])
1999
+ assert_equal(out.shape, self.tgtShape)
2000
+
2001
+ def test_three_arg_funcs(self):
2002
+ funcs = [random.noncentral_f, random.triangular,
2003
+ random.hypergeometric]
2004
+
2005
+ for func in funcs:
2006
+ out = func(self.argOne, self.argTwo, self.argThree)
2007
+ assert_equal(out.shape, self.tgtShape)
2008
+
2009
+ out = func(self.argOne[0], self.argTwo, self.argThree)
2010
+ assert_equal(out.shape, self.tgtShape)
2011
+
2012
+ out = func(self.argOne, self.argTwo[0], self.argThree)
2013
+ assert_equal(out.shape, self.tgtShape)
2014
+
2015
+
2016
+ # Ensure returned array dtype is correct for platform
2017
+ def test_integer_dtype(int_func):
2018
+ random.seed(123456789)
2019
+ fname, args, sha256 = int_func
2020
+ f = getattr(random, fname)
2021
+ actual = f(*args, size=2)
2022
+ assert_(actual.dtype == np.dtype('l'))
2023
+
2024
+
2025
+ def test_integer_repeat(int_func):
2026
+ random.seed(123456789)
2027
+ fname, args, sha256 = int_func
2028
+ f = getattr(random, fname)
2029
+ val = f(*args, size=1000000)
2030
+ if sys.byteorder != 'little':
2031
+ val = val.byteswap()
2032
+ res = hashlib.sha256(val.view(np.int8)).hexdigest()
2033
+ assert_(res == sha256)
2034
+
2035
+
2036
+ def test_broadcast_size_error():
2037
+ # GH-16833
2038
+ with pytest.raises(ValueError):
2039
+ random.binomial(1, [0.3, 0.7], size=(2, 1))
2040
+ with pytest.raises(ValueError):
2041
+ random.binomial([1, 2], 0.3, size=(2, 1))
2042
+ with pytest.raises(ValueError):
2043
+ random.binomial([1, 2], [0.3, 0.7], size=(2, 1))
2044
+
2045
+
2046
+ def test_randomstate_ctor_old_style_pickle():
2047
+ rs = np.random.RandomState(MT19937(0))
2048
+ rs.standard_normal(1)
2049
+ # Directly call reduce which is used in pickling
2050
+ ctor, args, state_a = rs.__reduce__()
2051
+ # Simulate unpickling an old pickle that only has the name
2052
+ assert args[:1] == ("MT19937",)
2053
+ b = ctor(*args[:1])
2054
+ b.set_state(state_a)
2055
+ state_b = b.get_state(legacy=False)
2056
+
2057
+ assert_equal(state_a['bit_generator'], state_b['bit_generator'])
2058
+ assert_array_equal(state_a['state']['key'], state_b['state']['key'])
2059
+ assert_array_equal(state_a['state']['pos'], state_b['state']['pos'])
2060
+ assert_equal(state_a['has_gauss'], state_b['has_gauss'])
2061
+ assert_equal(state_a['gauss'], state_b['gauss'])
2062
+
2063
+
2064
+ def test_hot_swap(restore_singleton_bitgen):
2065
+ # GH 21808
2066
+ def_bg = np.random.default_rng(0)
2067
+ bg = def_bg.bit_generator
2068
+ np.random.set_bit_generator(bg)
2069
+ assert isinstance(np.random.mtrand._rand._bit_generator, type(bg))
2070
+
2071
+ second_bg = np.random.get_bit_generator()
2072
+ assert bg is second_bg
2073
+
2074
+
2075
+ def test_seed_alt_bit_gen(restore_singleton_bitgen):
2076
+ # GH 21808
2077
+ bg = PCG64(0)
2078
+ np.random.set_bit_generator(bg)
2079
+ state = np.random.get_state(legacy=False)
2080
+ np.random.seed(1)
2081
+ new_state = np.random.get_state(legacy=False)
2082
+ print(state)
2083
+ print(new_state)
2084
+ assert state["bit_generator"] == "PCG64"
2085
+ assert state["state"]["state"] != new_state["state"]["state"]
2086
+ assert state["state"]["inc"] != new_state["state"]["inc"]
2087
+
2088
+
2089
+ def test_state_error_alt_bit_gen(restore_singleton_bitgen):
2090
+ # GH 21808
2091
+ state = np.random.get_state()
2092
+ bg = PCG64(0)
2093
+ np.random.set_bit_generator(bg)
2094
+ with pytest.raises(ValueError, match="state must be for a PCG64"):
2095
+ np.random.set_state(state)
2096
+
2097
+
2098
+ def test_swap_worked(restore_singleton_bitgen):
2099
+ # GH 21808
2100
+ np.random.seed(98765)
2101
+ vals = np.random.randint(0, 2 ** 30, 10)
2102
+ bg = PCG64(0)
2103
+ state = bg.state
2104
+ np.random.set_bit_generator(bg)
2105
+ state_direct = np.random.get_state(legacy=False)
2106
+ for field in state:
2107
+ assert state[field] == state_direct[field]
2108
+ np.random.seed(98765)
2109
+ pcg_vals = np.random.randint(0, 2 ** 30, 10)
2110
+ assert not np.all(vals == pcg_vals)
2111
+ new_state = bg.state
2112
+ assert new_state["state"]["state"] != state["state"]["state"]
2113
+ assert new_state["state"]["inc"] == new_state["state"]["inc"]
2114
+
2115
+
2116
+ def test_swapped_singleton_against_direct(restore_singleton_bitgen):
2117
+ np.random.set_bit_generator(PCG64(98765))
2118
+ singleton_vals = np.random.randint(0, 2 ** 30, 10)
2119
+ rg = np.random.RandomState(PCG64(98765))
2120
+ non_singleton_vals = rg.randint(0, 2 ** 30, 10)
2121
+ assert_equal(non_singleton_vals, singleton_vals)
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_randomstate_regression.py ADDED
@@ -0,0 +1,216 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+
3
+ import pytest
4
+
5
+ from numpy.testing import (
6
+ assert_, assert_array_equal, assert_raises,
7
+ )
8
+ import numpy as np
9
+
10
+ from numpy import random
11
+
12
+
13
+ class TestRegression:
14
+
15
+ def test_VonMises_range(self):
16
+ # Make sure generated random variables are in [-pi, pi].
17
+ # Regression test for ticket #986.
18
+ for mu in np.linspace(-7., 7., 5):
19
+ r = random.vonmises(mu, 1, 50)
20
+ assert_(np.all(r > -np.pi) and np.all(r <= np.pi))
21
+
22
+ def test_hypergeometric_range(self):
23
+ # Test for ticket #921
24
+ assert_(np.all(random.hypergeometric(3, 18, 11, size=10) < 4))
25
+ assert_(np.all(random.hypergeometric(18, 3, 11, size=10) > 0))
26
+
27
+ # Test for ticket #5623
28
+ args = [
29
+ (2**20 - 2, 2**20 - 2, 2**20 - 2), # Check for 32-bit systems
30
+ ]
31
+ is_64bits = sys.maxsize > 2**32
32
+ if is_64bits and sys.platform != 'win32':
33
+ # Check for 64-bit systems
34
+ args.append((2**40 - 2, 2**40 - 2, 2**40 - 2))
35
+ for arg in args:
36
+ assert_(random.hypergeometric(*arg) > 0)
37
+
38
+ def test_logseries_convergence(self):
39
+ # Test for ticket #923
40
+ N = 1000
41
+ random.seed(0)
42
+ rvsn = random.logseries(0.8, size=N)
43
+ # these two frequency counts should be close to theoretical
44
+ # numbers with this large sample
45
+ # theoretical large N result is 0.49706795
46
+ freq = np.sum(rvsn == 1) / N
47
+ msg = f'Frequency was {freq:f}, should be > 0.45'
48
+ assert_(freq > 0.45, msg)
49
+ # theoretical large N result is 0.19882718
50
+ freq = np.sum(rvsn == 2) / N
51
+ msg = f'Frequency was {freq:f}, should be < 0.23'
52
+ assert_(freq < 0.23, msg)
53
+
54
+ def test_shuffle_mixed_dimension(self):
55
+ # Test for trac ticket #2074
56
+ for t in [[1, 2, 3, None],
57
+ [(1, 1), (2, 2), (3, 3), None],
58
+ [1, (2, 2), (3, 3), None],
59
+ [(1, 1), 2, 3, None]]:
60
+ random.seed(12345)
61
+ shuffled = list(t)
62
+ random.shuffle(shuffled)
63
+ expected = np.array([t[0], t[3], t[1], t[2]], dtype=object)
64
+ assert_array_equal(np.array(shuffled, dtype=object), expected)
65
+
66
+ def test_call_within_randomstate(self):
67
+ # Check that custom RandomState does not call into global state
68
+ m = random.RandomState()
69
+ res = np.array([0, 8, 7, 2, 1, 9, 4, 7, 0, 3])
70
+ for i in range(3):
71
+ random.seed(i)
72
+ m.seed(4321)
73
+ # If m.state is not honored, the result will change
74
+ assert_array_equal(m.choice(10, size=10, p=np.ones(10)/10.), res)
75
+
76
+ def test_multivariate_normal_size_types(self):
77
+ # Test for multivariate_normal issue with 'size' argument.
78
+ # Check that the multivariate_normal size argument can be a
79
+ # numpy integer.
80
+ random.multivariate_normal([0], [[0]], size=1)
81
+ random.multivariate_normal([0], [[0]], size=np.int_(1))
82
+ random.multivariate_normal([0], [[0]], size=np.int64(1))
83
+
84
+ def test_beta_small_parameters(self):
85
+ # Test that beta with small a and b parameters does not produce
86
+ # NaNs due to roundoff errors causing 0 / 0, gh-5851
87
+ random.seed(1234567890)
88
+ x = random.beta(0.0001, 0.0001, size=100)
89
+ assert_(not np.any(np.isnan(x)), 'Nans in random.beta')
90
+
91
+ def test_choice_sum_of_probs_tolerance(self):
92
+ # The sum of probs should be 1.0 with some tolerance.
93
+ # For low precision dtypes the tolerance was too tight.
94
+ # See numpy github issue 6123.
95
+ random.seed(1234)
96
+ a = [1, 2, 3]
97
+ counts = [4, 4, 2]
98
+ for dt in np.float16, np.float32, np.float64:
99
+ probs = np.array(counts, dtype=dt) / sum(counts)
100
+ c = random.choice(a, p=probs)
101
+ assert_(c in a)
102
+ assert_raises(ValueError, random.choice, a, p=probs*0.9)
103
+
104
+ def test_shuffle_of_array_of_different_length_strings(self):
105
+ # Test that permuting an array of different length strings
106
+ # will not cause a segfault on garbage collection
107
+ # Tests gh-7710
108
+ random.seed(1234)
109
+
110
+ a = np.array(['a', 'a' * 1000])
111
+
112
+ for _ in range(100):
113
+ random.shuffle(a)
114
+
115
+ # Force Garbage Collection - should not segfault.
116
+ import gc
117
+ gc.collect()
118
+
119
+ def test_shuffle_of_array_of_objects(self):
120
+ # Test that permuting an array of objects will not cause
121
+ # a segfault on garbage collection.
122
+ # See gh-7719
123
+ random.seed(1234)
124
+ a = np.array([np.arange(1), np.arange(4)], dtype=object)
125
+
126
+ for _ in range(1000):
127
+ random.shuffle(a)
128
+
129
+ # Force Garbage Collection - should not segfault.
130
+ import gc
131
+ gc.collect()
132
+
133
+ def test_permutation_subclass(self):
134
+ class N(np.ndarray):
135
+ pass
136
+
137
+ random.seed(1)
138
+ orig = np.arange(3).view(N)
139
+ perm = random.permutation(orig)
140
+ assert_array_equal(perm, np.array([0, 2, 1]))
141
+ assert_array_equal(orig, np.arange(3).view(N))
142
+
143
+ class M:
144
+ a = np.arange(5)
145
+
146
+ def __array__(self):
147
+ return self.a
148
+
149
+ random.seed(1)
150
+ m = M()
151
+ perm = random.permutation(m)
152
+ assert_array_equal(perm, np.array([2, 1, 4, 0, 3]))
153
+ assert_array_equal(m.__array__(), np.arange(5))
154
+
155
+ def test_warns_byteorder(self):
156
+ # GH 13159
157
+ other_byteord_dt = '<i4' if sys.byteorder == 'big' else '>i4'
158
+ with pytest.deprecated_call(match='non-native byteorder is not'):
159
+ random.randint(0, 200, size=10, dtype=other_byteord_dt)
160
+
161
+ def test_named_argument_initialization(self):
162
+ # GH 13669
163
+ rs1 = np.random.RandomState(123456789)
164
+ rs2 = np.random.RandomState(seed=123456789)
165
+ assert rs1.randint(0, 100) == rs2.randint(0, 100)
166
+
167
+ def test_choice_retun_dtype(self):
168
+ # GH 9867
169
+ c = np.random.choice(10, p=[.1]*10, size=2)
170
+ assert c.dtype == np.dtype(int)
171
+ c = np.random.choice(10, p=[.1]*10, replace=False, size=2)
172
+ assert c.dtype == np.dtype(int)
173
+ c = np.random.choice(10, size=2)
174
+ assert c.dtype == np.dtype(int)
175
+ c = np.random.choice(10, replace=False, size=2)
176
+ assert c.dtype == np.dtype(int)
177
+
178
+ @pytest.mark.skipif(np.iinfo('l').max < 2**32,
179
+ reason='Cannot test with 32-bit C long')
180
+ def test_randint_117(self):
181
+ # GH 14189
182
+ random.seed(0)
183
+ expected = np.array([2357136044, 2546248239, 3071714933, 3626093760,
184
+ 2588848963, 3684848379, 2340255427, 3638918503,
185
+ 1819583497, 2678185683], dtype='int64')
186
+ actual = random.randint(2**32, size=10)
187
+ assert_array_equal(actual, expected)
188
+
189
+ def test_p_zero_stream(self):
190
+ # Regression test for gh-14522. Ensure that future versions
191
+ # generate the same variates as version 1.16.
192
+ np.random.seed(12345)
193
+ assert_array_equal(random.binomial(1, [0, 0.25, 0.5, 0.75, 1]),
194
+ [0, 0, 0, 1, 1])
195
+
196
+ def test_n_zero_stream(self):
197
+ # Regression test for gh-14522. Ensure that future versions
198
+ # generate the same variates as version 1.16.
199
+ np.random.seed(8675309)
200
+ expected = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
201
+ [3, 4, 2, 3, 3, 1, 5, 3, 1, 3]])
202
+ assert_array_equal(random.binomial([[0], [10]], 0.25, size=(2, 10)),
203
+ expected)
204
+
205
+
206
+ def test_multinomial_empty():
207
+ # gh-20483
208
+ # Ensure that empty p-vals are correctly handled
209
+ assert random.multinomial(10, []).shape == (0,)
210
+ assert random.multinomial(3, [], size=(7, 5, 3)).shape == (7, 5, 3, 0)
211
+
212
+
213
+ def test_multinomial_1d_pval():
214
+ # gh-20483
215
+ with pytest.raises(TypeError, match="pvals must be a 1-d"):
216
+ random.multinomial(10, 0.3)
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_regression.py ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ from numpy.testing import (
3
+ assert_, assert_array_equal, assert_raises,
4
+ )
5
+ from numpy import random
6
+ import numpy as np
7
+
8
+
9
+ class TestRegression:
10
+
11
+ def test_VonMises_range(self):
12
+ # Make sure generated random variables are in [-pi, pi].
13
+ # Regression test for ticket #986.
14
+ for mu in np.linspace(-7., 7., 5):
15
+ r = random.mtrand.vonmises(mu, 1, 50)
16
+ assert_(np.all(r > -np.pi) and np.all(r <= np.pi))
17
+
18
+ def test_hypergeometric_range(self):
19
+ # Test for ticket #921
20
+ assert_(np.all(np.random.hypergeometric(3, 18, 11, size=10) < 4))
21
+ assert_(np.all(np.random.hypergeometric(18, 3, 11, size=10) > 0))
22
+
23
+ # Test for ticket #5623
24
+ args = [
25
+ (2**20 - 2, 2**20 - 2, 2**20 - 2), # Check for 32-bit systems
26
+ ]
27
+ is_64bits = sys.maxsize > 2**32
28
+ if is_64bits and sys.platform != 'win32':
29
+ # Check for 64-bit systems
30
+ args.append((2**40 - 2, 2**40 - 2, 2**40 - 2))
31
+ for arg in args:
32
+ assert_(np.random.hypergeometric(*arg) > 0)
33
+
34
+ def test_logseries_convergence(self):
35
+ # Test for ticket #923
36
+ N = 1000
37
+ np.random.seed(0)
38
+ rvsn = np.random.logseries(0.8, size=N)
39
+ # these two frequency counts should be close to theoretical
40
+ # numbers with this large sample
41
+ # theoretical large N result is 0.49706795
42
+ freq = np.sum(rvsn == 1) / N
43
+ msg = f'Frequency was {freq:f}, should be > 0.45'
44
+ assert_(freq > 0.45, msg)
45
+ # theoretical large N result is 0.19882718
46
+ freq = np.sum(rvsn == 2) / N
47
+ msg = f'Frequency was {freq:f}, should be < 0.23'
48
+ assert_(freq < 0.23, msg)
49
+
50
+ def test_shuffle_mixed_dimension(self):
51
+ # Test for trac ticket #2074
52
+ for t in [[1, 2, 3, None],
53
+ [(1, 1), (2, 2), (3, 3), None],
54
+ [1, (2, 2), (3, 3), None],
55
+ [(1, 1), 2, 3, None]]:
56
+ np.random.seed(12345)
57
+ shuffled = list(t)
58
+ random.shuffle(shuffled)
59
+ expected = np.array([t[0], t[3], t[1], t[2]], dtype=object)
60
+ assert_array_equal(np.array(shuffled, dtype=object), expected)
61
+
62
+ def test_call_within_randomstate(self):
63
+ # Check that custom RandomState does not call into global state
64
+ m = np.random.RandomState()
65
+ res = np.array([0, 8, 7, 2, 1, 9, 4, 7, 0, 3])
66
+ for i in range(3):
67
+ np.random.seed(i)
68
+ m.seed(4321)
69
+ # If m.state is not honored, the result will change
70
+ assert_array_equal(m.choice(10, size=10, p=np.ones(10)/10.), res)
71
+
72
+ def test_multivariate_normal_size_types(self):
73
+ # Test for multivariate_normal issue with 'size' argument.
74
+ # Check that the multivariate_normal size argument can be a
75
+ # numpy integer.
76
+ np.random.multivariate_normal([0], [[0]], size=1)
77
+ np.random.multivariate_normal([0], [[0]], size=np.int_(1))
78
+ np.random.multivariate_normal([0], [[0]], size=np.int64(1))
79
+
80
+ def test_beta_small_parameters(self):
81
+ # Test that beta with small a and b parameters does not produce
82
+ # NaNs due to roundoff errors causing 0 / 0, gh-5851
83
+ np.random.seed(1234567890)
84
+ x = np.random.beta(0.0001, 0.0001, size=100)
85
+ assert_(not np.any(np.isnan(x)), 'Nans in np.random.beta')
86
+
87
+ def test_choice_sum_of_probs_tolerance(self):
88
+ # The sum of probs should be 1.0 with some tolerance.
89
+ # For low precision dtypes the tolerance was too tight.
90
+ # See numpy github issue 6123.
91
+ np.random.seed(1234)
92
+ a = [1, 2, 3]
93
+ counts = [4, 4, 2]
94
+ for dt in np.float16, np.float32, np.float64:
95
+ probs = np.array(counts, dtype=dt) / sum(counts)
96
+ c = np.random.choice(a, p=probs)
97
+ assert_(c in a)
98
+ assert_raises(ValueError, np.random.choice, a, p=probs*0.9)
99
+
100
+ def test_shuffle_of_array_of_different_length_strings(self):
101
+ # Test that permuting an array of different length strings
102
+ # will not cause a segfault on garbage collection
103
+ # Tests gh-7710
104
+ np.random.seed(1234)
105
+
106
+ a = np.array(['a', 'a' * 1000])
107
+
108
+ for _ in range(100):
109
+ np.random.shuffle(a)
110
+
111
+ # Force Garbage Collection - should not segfault.
112
+ import gc
113
+ gc.collect()
114
+
115
+ def test_shuffle_of_array_of_objects(self):
116
+ # Test that permuting an array of objects will not cause
117
+ # a segfault on garbage collection.
118
+ # See gh-7719
119
+ np.random.seed(1234)
120
+ a = np.array([np.arange(1), np.arange(4)], dtype=object)
121
+
122
+ for _ in range(1000):
123
+ np.random.shuffle(a)
124
+
125
+ # Force Garbage Collection - should not segfault.
126
+ import gc
127
+ gc.collect()
128
+
129
+ def test_permutation_subclass(self):
130
+ class N(np.ndarray):
131
+ pass
132
+
133
+ np.random.seed(1)
134
+ orig = np.arange(3).view(N)
135
+ perm = np.random.permutation(orig)
136
+ assert_array_equal(perm, np.array([0, 2, 1]))
137
+ assert_array_equal(orig, np.arange(3).view(N))
138
+
139
+ class M:
140
+ a = np.arange(5)
141
+
142
+ def __array__(self):
143
+ return self.a
144
+
145
+ np.random.seed(1)
146
+ m = M()
147
+ perm = np.random.permutation(m)
148
+ assert_array_equal(perm, np.array([2, 1, 4, 0, 3]))
149
+ assert_array_equal(m.__array__(), np.arange(5))
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_seed_sequence.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ from numpy.testing import assert_array_equal, assert_array_compare
3
+
4
+ from numpy.random import SeedSequence
5
+
6
+
7
+ def test_reference_data():
8
+ """ Check that SeedSequence generates data the same as the C++ reference.
9
+
10
+ https://gist.github.com/imneme/540829265469e673d045
11
+ """
12
+ inputs = [
13
+ [3735928559, 195939070, 229505742, 305419896],
14
+ [3668361503, 4165561550, 1661411377, 3634257570],
15
+ [164546577, 4166754639, 1765190214, 1303880213],
16
+ [446610472, 3941463886, 522937693, 1882353782],
17
+ [1864922766, 1719732118, 3882010307, 1776744564],
18
+ [4141682960, 3310988675, 553637289, 902896340],
19
+ [1134851934, 2352871630, 3699409824, 2648159817],
20
+ [1240956131, 3107113773, 1283198141, 1924506131],
21
+ [2669565031, 579818610, 3042504477, 2774880435],
22
+ [2766103236, 2883057919, 4029656435, 862374500],
23
+ ]
24
+ outputs = [
25
+ [3914649087, 576849849, 3593928901, 2229911004],
26
+ [2240804226, 3691353228, 1365957195, 2654016646],
27
+ [3562296087, 3191708229, 1147942216, 3726991905],
28
+ [1403443605, 3591372999, 1291086759, 441919183],
29
+ [1086200464, 2191331643, 560336446, 3658716651],
30
+ [3249937430, 2346751812, 847844327, 2996632307],
31
+ [2584285912, 4034195531, 3523502488, 169742686],
32
+ [959045797, 3875435559, 1886309314, 359682705],
33
+ [3978441347, 432478529, 3223635119, 138903045],
34
+ [296367413, 4262059219, 13109864, 3283683422],
35
+ ]
36
+ outputs64 = [
37
+ [2477551240072187391, 9577394838764454085],
38
+ [15854241394484835714, 11398914698975566411],
39
+ [13708282465491374871, 16007308345579681096],
40
+ [15424829579845884309, 1898028439751125927],
41
+ [9411697742461147792, 15714068361935982142],
42
+ [10079222287618677782, 12870437757549876199],
43
+ [17326737873898640088, 729039288628699544],
44
+ [16644868984619524261, 1544825456798124994],
45
+ [1857481142255628931, 596584038813451439],
46
+ [18305404959516669237, 14103312907920476776],
47
+ ]
48
+ for seed, expected, expected64 in zip(inputs, outputs, outputs64):
49
+ expected = np.array(expected, dtype=np.uint32)
50
+ ss = SeedSequence(seed)
51
+ state = ss.generate_state(len(expected))
52
+ assert_array_equal(state, expected)
53
+ state64 = ss.generate_state(len(expected64), dtype=np.uint64)
54
+ assert_array_equal(state64, expected64)
55
+
56
+
57
+ def test_zero_padding():
58
+ """ Ensure that the implicit zero-padding does not cause problems.
59
+ """
60
+ # Ensure that large integers are inserted in little-endian fashion to avoid
61
+ # trailing 0s.
62
+ ss0 = SeedSequence(42)
63
+ ss1 = SeedSequence(42 << 32)
64
+ assert_array_compare(
65
+ np.not_equal,
66
+ ss0.generate_state(4),
67
+ ss1.generate_state(4))
68
+
69
+ # Ensure backwards compatibility with the original 0.17 release for small
70
+ # integers and no spawn key.
71
+ expected42 = np.array([3444837047, 2669555309, 2046530742, 3581440988],
72
+ dtype=np.uint32)
73
+ assert_array_equal(SeedSequence(42).generate_state(4), expected42)
74
+
75
+ # Regression test for gh-16539 to ensure that the implicit 0s don't
76
+ # conflict with spawn keys.
77
+ assert_array_compare(
78
+ np.not_equal,
79
+ SeedSequence(42, spawn_key=(0,)).generate_state(4),
80
+ expected42)
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_smoke.py ADDED
@@ -0,0 +1,818 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pickle
2
+ from functools import partial
3
+
4
+ import numpy as np
5
+ import pytest
6
+ from numpy.testing import assert_equal, assert_, assert_array_equal
7
+ from numpy.random import (Generator, MT19937, PCG64, PCG64DXSM, Philox, SFC64)
8
+
9
+ @pytest.fixture(scope='module',
10
+ params=(np.bool_, np.int8, np.int16, np.int32, np.int64,
11
+ np.uint8, np.uint16, np.uint32, np.uint64))
12
+ def dtype(request):
13
+ return request.param
14
+
15
+
16
+ def params_0(f):
17
+ val = f()
18
+ assert_(np.isscalar(val))
19
+ val = f(10)
20
+ assert_(val.shape == (10,))
21
+ val = f((10, 10))
22
+ assert_(val.shape == (10, 10))
23
+ val = f((10, 10, 10))
24
+ assert_(val.shape == (10, 10, 10))
25
+ val = f(size=(5, 5))
26
+ assert_(val.shape == (5, 5))
27
+
28
+
29
+ def params_1(f, bounded=False):
30
+ a = 5.0
31
+ b = np.arange(2.0, 12.0)
32
+ c = np.arange(2.0, 102.0).reshape((10, 10))
33
+ d = np.arange(2.0, 1002.0).reshape((10, 10, 10))
34
+ e = np.array([2.0, 3.0])
35
+ g = np.arange(2.0, 12.0).reshape((1, 10, 1))
36
+ if bounded:
37
+ a = 0.5
38
+ b = b / (1.5 * b.max())
39
+ c = c / (1.5 * c.max())
40
+ d = d / (1.5 * d.max())
41
+ e = e / (1.5 * e.max())
42
+ g = g / (1.5 * g.max())
43
+
44
+ # Scalar
45
+ f(a)
46
+ # Scalar - size
47
+ f(a, size=(10, 10))
48
+ # 1d
49
+ f(b)
50
+ # 2d
51
+ f(c)
52
+ # 3d
53
+ f(d)
54
+ # 1d size
55
+ f(b, size=10)
56
+ # 2d - size - broadcast
57
+ f(e, size=(10, 2))
58
+ # 3d - size
59
+ f(g, size=(10, 10, 10))
60
+
61
+
62
+ def comp_state(state1, state2):
63
+ identical = True
64
+ if isinstance(state1, dict):
65
+ for key in state1:
66
+ identical &= comp_state(state1[key], state2[key])
67
+ elif type(state1) != type(state2):
68
+ identical &= type(state1) == type(state2)
69
+ else:
70
+ if (isinstance(state1, (list, tuple, np.ndarray)) and isinstance(
71
+ state2, (list, tuple, np.ndarray))):
72
+ for s1, s2 in zip(state1, state2):
73
+ identical &= comp_state(s1, s2)
74
+ else:
75
+ identical &= state1 == state2
76
+ return identical
77
+
78
+
79
+ def warmup(rg, n=None):
80
+ if n is None:
81
+ n = 11 + np.random.randint(0, 20)
82
+ rg.standard_normal(n)
83
+ rg.standard_normal(n)
84
+ rg.standard_normal(n, dtype=np.float32)
85
+ rg.standard_normal(n, dtype=np.float32)
86
+ rg.integers(0, 2 ** 24, n, dtype=np.uint64)
87
+ rg.integers(0, 2 ** 48, n, dtype=np.uint64)
88
+ rg.standard_gamma(11.0, n)
89
+ rg.standard_gamma(11.0, n, dtype=np.float32)
90
+ rg.random(n, dtype=np.float64)
91
+ rg.random(n, dtype=np.float32)
92
+
93
+
94
+ class RNG:
95
+ @classmethod
96
+ def setup_class(cls):
97
+ # Overridden in test classes. Place holder to silence IDE noise
98
+ cls.bit_generator = PCG64
99
+ cls.advance = None
100
+ cls.seed = [12345]
101
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
102
+ cls.initial_state = cls.rg.bit_generator.state
103
+ cls.seed_vector_bits = 64
104
+ cls._extra_setup()
105
+
106
+ @classmethod
107
+ def _extra_setup(cls):
108
+ cls.vec_1d = np.arange(2.0, 102.0)
109
+ cls.vec_2d = np.arange(2.0, 102.0)[None, :]
110
+ cls.mat = np.arange(2.0, 102.0, 0.01).reshape((100, 100))
111
+ cls.seed_error = TypeError
112
+
113
+ def _reset_state(self):
114
+ self.rg.bit_generator.state = self.initial_state
115
+
116
+ def test_init(self):
117
+ rg = Generator(self.bit_generator())
118
+ state = rg.bit_generator.state
119
+ rg.standard_normal(1)
120
+ rg.standard_normal(1)
121
+ rg.bit_generator.state = state
122
+ new_state = rg.bit_generator.state
123
+ assert_(comp_state(state, new_state))
124
+
125
+ def test_advance(self):
126
+ state = self.rg.bit_generator.state
127
+ if hasattr(self.rg.bit_generator, 'advance'):
128
+ self.rg.bit_generator.advance(self.advance)
129
+ assert_(not comp_state(state, self.rg.bit_generator.state))
130
+ else:
131
+ bitgen_name = self.rg.bit_generator.__class__.__name__
132
+ pytest.skip(f'Advance is not supported by {bitgen_name}')
133
+
134
+ def test_jump(self):
135
+ state = self.rg.bit_generator.state
136
+ if hasattr(self.rg.bit_generator, 'jumped'):
137
+ bit_gen2 = self.rg.bit_generator.jumped()
138
+ jumped_state = bit_gen2.state
139
+ assert_(not comp_state(state, jumped_state))
140
+ self.rg.random(2 * 3 * 5 * 7 * 11 * 13 * 17)
141
+ self.rg.bit_generator.state = state
142
+ bit_gen3 = self.rg.bit_generator.jumped()
143
+ rejumped_state = bit_gen3.state
144
+ assert_(comp_state(jumped_state, rejumped_state))
145
+ else:
146
+ bitgen_name = self.rg.bit_generator.__class__.__name__
147
+ if bitgen_name not in ('SFC64',):
148
+ raise AttributeError(f'no "jumped" in {bitgen_name}')
149
+ pytest.skip(f'Jump is not supported by {bitgen_name}')
150
+
151
+ def test_uniform(self):
152
+ r = self.rg.uniform(-1.0, 0.0, size=10)
153
+ assert_(len(r) == 10)
154
+ assert_((r > -1).all())
155
+ assert_((r <= 0).all())
156
+
157
+ def test_uniform_array(self):
158
+ r = self.rg.uniform(np.array([-1.0] * 10), 0.0, size=10)
159
+ assert_(len(r) == 10)
160
+ assert_((r > -1).all())
161
+ assert_((r <= 0).all())
162
+ r = self.rg.uniform(np.array([-1.0] * 10),
163
+ np.array([0.0] * 10), size=10)
164
+ assert_(len(r) == 10)
165
+ assert_((r > -1).all())
166
+ assert_((r <= 0).all())
167
+ r = self.rg.uniform(-1.0, np.array([0.0] * 10), size=10)
168
+ assert_(len(r) == 10)
169
+ assert_((r > -1).all())
170
+ assert_((r <= 0).all())
171
+
172
+ def test_random(self):
173
+ assert_(len(self.rg.random(10)) == 10)
174
+ params_0(self.rg.random)
175
+
176
+ def test_standard_normal_zig(self):
177
+ assert_(len(self.rg.standard_normal(10)) == 10)
178
+
179
+ def test_standard_normal(self):
180
+ assert_(len(self.rg.standard_normal(10)) == 10)
181
+ params_0(self.rg.standard_normal)
182
+
183
+ def test_standard_gamma(self):
184
+ assert_(len(self.rg.standard_gamma(10, 10)) == 10)
185
+ assert_(len(self.rg.standard_gamma(np.array([10] * 10), 10)) == 10)
186
+ params_1(self.rg.standard_gamma)
187
+
188
+ def test_standard_exponential(self):
189
+ assert_(len(self.rg.standard_exponential(10)) == 10)
190
+ params_0(self.rg.standard_exponential)
191
+
192
+ def test_standard_exponential_float(self):
193
+ randoms = self.rg.standard_exponential(10, dtype='float32')
194
+ assert_(len(randoms) == 10)
195
+ assert randoms.dtype == np.float32
196
+ params_0(partial(self.rg.standard_exponential, dtype='float32'))
197
+
198
+ def test_standard_exponential_float_log(self):
199
+ randoms = self.rg.standard_exponential(10, dtype='float32',
200
+ method='inv')
201
+ assert_(len(randoms) == 10)
202
+ assert randoms.dtype == np.float32
203
+ params_0(partial(self.rg.standard_exponential, dtype='float32',
204
+ method='inv'))
205
+
206
+ def test_standard_cauchy(self):
207
+ assert_(len(self.rg.standard_cauchy(10)) == 10)
208
+ params_0(self.rg.standard_cauchy)
209
+
210
+ def test_standard_t(self):
211
+ assert_(len(self.rg.standard_t(10, 10)) == 10)
212
+ params_1(self.rg.standard_t)
213
+
214
+ def test_binomial(self):
215
+ assert_(self.rg.binomial(10, .5) >= 0)
216
+ assert_(self.rg.binomial(1000, .5) >= 0)
217
+
218
+ def test_reset_state(self):
219
+ state = self.rg.bit_generator.state
220
+ int_1 = self.rg.integers(2**31)
221
+ self.rg.bit_generator.state = state
222
+ int_2 = self.rg.integers(2**31)
223
+ assert_(int_1 == int_2)
224
+
225
+ def test_entropy_init(self):
226
+ rg = Generator(self.bit_generator())
227
+ rg2 = Generator(self.bit_generator())
228
+ assert_(not comp_state(rg.bit_generator.state,
229
+ rg2.bit_generator.state))
230
+
231
+ def test_seed(self):
232
+ rg = Generator(self.bit_generator(*self.seed))
233
+ rg2 = Generator(self.bit_generator(*self.seed))
234
+ rg.random()
235
+ rg2.random()
236
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
237
+
238
+ def test_reset_state_gauss(self):
239
+ rg = Generator(self.bit_generator(*self.seed))
240
+ rg.standard_normal()
241
+ state = rg.bit_generator.state
242
+ n1 = rg.standard_normal(size=10)
243
+ rg2 = Generator(self.bit_generator())
244
+ rg2.bit_generator.state = state
245
+ n2 = rg2.standard_normal(size=10)
246
+ assert_array_equal(n1, n2)
247
+
248
+ def test_reset_state_uint32(self):
249
+ rg = Generator(self.bit_generator(*self.seed))
250
+ rg.integers(0, 2 ** 24, 120, dtype=np.uint32)
251
+ state = rg.bit_generator.state
252
+ n1 = rg.integers(0, 2 ** 24, 10, dtype=np.uint32)
253
+ rg2 = Generator(self.bit_generator())
254
+ rg2.bit_generator.state = state
255
+ n2 = rg2.integers(0, 2 ** 24, 10, dtype=np.uint32)
256
+ assert_array_equal(n1, n2)
257
+
258
+ def test_reset_state_float(self):
259
+ rg = Generator(self.bit_generator(*self.seed))
260
+ rg.random(dtype='float32')
261
+ state = rg.bit_generator.state
262
+ n1 = rg.random(size=10, dtype='float32')
263
+ rg2 = Generator(self.bit_generator())
264
+ rg2.bit_generator.state = state
265
+ n2 = rg2.random(size=10, dtype='float32')
266
+ assert_((n1 == n2).all())
267
+
268
+ def test_shuffle(self):
269
+ original = np.arange(200, 0, -1)
270
+ permuted = self.rg.permutation(original)
271
+ assert_((original != permuted).any())
272
+
273
+ def test_permutation(self):
274
+ original = np.arange(200, 0, -1)
275
+ permuted = self.rg.permutation(original)
276
+ assert_((original != permuted).any())
277
+
278
+ def test_beta(self):
279
+ vals = self.rg.beta(2.0, 2.0, 10)
280
+ assert_(len(vals) == 10)
281
+ vals = self.rg.beta(np.array([2.0] * 10), 2.0)
282
+ assert_(len(vals) == 10)
283
+ vals = self.rg.beta(2.0, np.array([2.0] * 10))
284
+ assert_(len(vals) == 10)
285
+ vals = self.rg.beta(np.array([2.0] * 10), np.array([2.0] * 10))
286
+ assert_(len(vals) == 10)
287
+ vals = self.rg.beta(np.array([2.0] * 10), np.array([[2.0]] * 10))
288
+ assert_(vals.shape == (10, 10))
289
+
290
+ def test_bytes(self):
291
+ vals = self.rg.bytes(10)
292
+ assert_(len(vals) == 10)
293
+
294
+ def test_chisquare(self):
295
+ vals = self.rg.chisquare(2.0, 10)
296
+ assert_(len(vals) == 10)
297
+ params_1(self.rg.chisquare)
298
+
299
+ def test_exponential(self):
300
+ vals = self.rg.exponential(2.0, 10)
301
+ assert_(len(vals) == 10)
302
+ params_1(self.rg.exponential)
303
+
304
+ def test_f(self):
305
+ vals = self.rg.f(3, 1000, 10)
306
+ assert_(len(vals) == 10)
307
+
308
+ def test_gamma(self):
309
+ vals = self.rg.gamma(3, 2, 10)
310
+ assert_(len(vals) == 10)
311
+
312
+ def test_geometric(self):
313
+ vals = self.rg.geometric(0.5, 10)
314
+ assert_(len(vals) == 10)
315
+ params_1(self.rg.exponential, bounded=True)
316
+
317
+ def test_gumbel(self):
318
+ vals = self.rg.gumbel(2.0, 2.0, 10)
319
+ assert_(len(vals) == 10)
320
+
321
+ def test_laplace(self):
322
+ vals = self.rg.laplace(2.0, 2.0, 10)
323
+ assert_(len(vals) == 10)
324
+
325
+ def test_logitic(self):
326
+ vals = self.rg.logistic(2.0, 2.0, 10)
327
+ assert_(len(vals) == 10)
328
+
329
+ def test_logseries(self):
330
+ vals = self.rg.logseries(0.5, 10)
331
+ assert_(len(vals) == 10)
332
+
333
+ def test_negative_binomial(self):
334
+ vals = self.rg.negative_binomial(10, 0.2, 10)
335
+ assert_(len(vals) == 10)
336
+
337
+ def test_noncentral_chisquare(self):
338
+ vals = self.rg.noncentral_chisquare(10, 2, 10)
339
+ assert_(len(vals) == 10)
340
+
341
+ def test_noncentral_f(self):
342
+ vals = self.rg.noncentral_f(3, 1000, 2, 10)
343
+ assert_(len(vals) == 10)
344
+ vals = self.rg.noncentral_f(np.array([3] * 10), 1000, 2)
345
+ assert_(len(vals) == 10)
346
+ vals = self.rg.noncentral_f(3, np.array([1000] * 10), 2)
347
+ assert_(len(vals) == 10)
348
+ vals = self.rg.noncentral_f(3, 1000, np.array([2] * 10))
349
+ assert_(len(vals) == 10)
350
+
351
+ def test_normal(self):
352
+ vals = self.rg.normal(10, 0.2, 10)
353
+ assert_(len(vals) == 10)
354
+
355
+ def test_pareto(self):
356
+ vals = self.rg.pareto(3.0, 10)
357
+ assert_(len(vals) == 10)
358
+
359
+ def test_poisson(self):
360
+ vals = self.rg.poisson(10, 10)
361
+ assert_(len(vals) == 10)
362
+ vals = self.rg.poisson(np.array([10] * 10))
363
+ assert_(len(vals) == 10)
364
+ params_1(self.rg.poisson)
365
+
366
+ def test_power(self):
367
+ vals = self.rg.power(0.2, 10)
368
+ assert_(len(vals) == 10)
369
+
370
+ def test_integers(self):
371
+ vals = self.rg.integers(10, 20, 10)
372
+ assert_(len(vals) == 10)
373
+
374
+ def test_rayleigh(self):
375
+ vals = self.rg.rayleigh(0.2, 10)
376
+ assert_(len(vals) == 10)
377
+ params_1(self.rg.rayleigh, bounded=True)
378
+
379
+ def test_vonmises(self):
380
+ vals = self.rg.vonmises(10, 0.2, 10)
381
+ assert_(len(vals) == 10)
382
+
383
+ def test_wald(self):
384
+ vals = self.rg.wald(1.0, 1.0, 10)
385
+ assert_(len(vals) == 10)
386
+
387
+ def test_weibull(self):
388
+ vals = self.rg.weibull(1.0, 10)
389
+ assert_(len(vals) == 10)
390
+
391
+ def test_zipf(self):
392
+ vals = self.rg.zipf(10, 10)
393
+ assert_(len(vals) == 10)
394
+ vals = self.rg.zipf(self.vec_1d)
395
+ assert_(len(vals) == 100)
396
+ vals = self.rg.zipf(self.vec_2d)
397
+ assert_(vals.shape == (1, 100))
398
+ vals = self.rg.zipf(self.mat)
399
+ assert_(vals.shape == (100, 100))
400
+
401
+ def test_hypergeometric(self):
402
+ vals = self.rg.hypergeometric(25, 25, 20)
403
+ assert_(np.isscalar(vals))
404
+ vals = self.rg.hypergeometric(np.array([25] * 10), 25, 20)
405
+ assert_(vals.shape == (10,))
406
+
407
+ def test_triangular(self):
408
+ vals = self.rg.triangular(-5, 0, 5)
409
+ assert_(np.isscalar(vals))
410
+ vals = self.rg.triangular(-5, np.array([0] * 10), 5)
411
+ assert_(vals.shape == (10,))
412
+
413
+ def test_multivariate_normal(self):
414
+ mean = [0, 0]
415
+ cov = [[1, 0], [0, 100]] # diagonal covariance
416
+ x = self.rg.multivariate_normal(mean, cov, 5000)
417
+ assert_(x.shape == (5000, 2))
418
+ x_zig = self.rg.multivariate_normal(mean, cov, 5000)
419
+ assert_(x.shape == (5000, 2))
420
+ x_inv = self.rg.multivariate_normal(mean, cov, 5000)
421
+ assert_(x.shape == (5000, 2))
422
+ assert_((x_zig != x_inv).any())
423
+
424
+ def test_multinomial(self):
425
+ vals = self.rg.multinomial(100, [1.0 / 3, 2.0 / 3])
426
+ assert_(vals.shape == (2,))
427
+ vals = self.rg.multinomial(100, [1.0 / 3, 2.0 / 3], size=10)
428
+ assert_(vals.shape == (10, 2))
429
+
430
+ def test_dirichlet(self):
431
+ s = self.rg.dirichlet((10, 5, 3), 20)
432
+ assert_(s.shape == (20, 3))
433
+
434
+ def test_pickle(self):
435
+ pick = pickle.dumps(self.rg)
436
+ unpick = pickle.loads(pick)
437
+ assert_((type(self.rg) == type(unpick)))
438
+ assert_(comp_state(self.rg.bit_generator.state,
439
+ unpick.bit_generator.state))
440
+
441
+ pick = pickle.dumps(self.rg)
442
+ unpick = pickle.loads(pick)
443
+ assert_((type(self.rg) == type(unpick)))
444
+ assert_(comp_state(self.rg.bit_generator.state,
445
+ unpick.bit_generator.state))
446
+
447
+ def test_seed_array(self):
448
+ if self.seed_vector_bits is None:
449
+ bitgen_name = self.bit_generator.__name__
450
+ pytest.skip(f'Vector seeding is not supported by {bitgen_name}')
451
+
452
+ if self.seed_vector_bits == 32:
453
+ dtype = np.uint32
454
+ else:
455
+ dtype = np.uint64
456
+ seed = np.array([1], dtype=dtype)
457
+ bg = self.bit_generator(seed)
458
+ state1 = bg.state
459
+ bg = self.bit_generator(1)
460
+ state2 = bg.state
461
+ assert_(comp_state(state1, state2))
462
+
463
+ seed = np.arange(4, dtype=dtype)
464
+ bg = self.bit_generator(seed)
465
+ state1 = bg.state
466
+ bg = self.bit_generator(seed[0])
467
+ state2 = bg.state
468
+ assert_(not comp_state(state1, state2))
469
+
470
+ seed = np.arange(1500, dtype=dtype)
471
+ bg = self.bit_generator(seed)
472
+ state1 = bg.state
473
+ bg = self.bit_generator(seed[0])
474
+ state2 = bg.state
475
+ assert_(not comp_state(state1, state2))
476
+
477
+ seed = 2 ** np.mod(np.arange(1500, dtype=dtype),
478
+ self.seed_vector_bits - 1) + 1
479
+ bg = self.bit_generator(seed)
480
+ state1 = bg.state
481
+ bg = self.bit_generator(seed[0])
482
+ state2 = bg.state
483
+ assert_(not comp_state(state1, state2))
484
+
485
+ def test_uniform_float(self):
486
+ rg = Generator(self.bit_generator(12345))
487
+ warmup(rg)
488
+ state = rg.bit_generator.state
489
+ r1 = rg.random(11, dtype=np.float32)
490
+ rg2 = Generator(self.bit_generator())
491
+ warmup(rg2)
492
+ rg2.bit_generator.state = state
493
+ r2 = rg2.random(11, dtype=np.float32)
494
+ assert_array_equal(r1, r2)
495
+ assert_equal(r1.dtype, np.float32)
496
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
497
+
498
+ def test_gamma_floats(self):
499
+ rg = Generator(self.bit_generator())
500
+ warmup(rg)
501
+ state = rg.bit_generator.state
502
+ r1 = rg.standard_gamma(4.0, 11, dtype=np.float32)
503
+ rg2 = Generator(self.bit_generator())
504
+ warmup(rg2)
505
+ rg2.bit_generator.state = state
506
+ r2 = rg2.standard_gamma(4.0, 11, dtype=np.float32)
507
+ assert_array_equal(r1, r2)
508
+ assert_equal(r1.dtype, np.float32)
509
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
510
+
511
+ def test_normal_floats(self):
512
+ rg = Generator(self.bit_generator())
513
+ warmup(rg)
514
+ state = rg.bit_generator.state
515
+ r1 = rg.standard_normal(11, dtype=np.float32)
516
+ rg2 = Generator(self.bit_generator())
517
+ warmup(rg2)
518
+ rg2.bit_generator.state = state
519
+ r2 = rg2.standard_normal(11, dtype=np.float32)
520
+ assert_array_equal(r1, r2)
521
+ assert_equal(r1.dtype, np.float32)
522
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
523
+
524
+ def test_normal_zig_floats(self):
525
+ rg = Generator(self.bit_generator())
526
+ warmup(rg)
527
+ state = rg.bit_generator.state
528
+ r1 = rg.standard_normal(11, dtype=np.float32)
529
+ rg2 = Generator(self.bit_generator())
530
+ warmup(rg2)
531
+ rg2.bit_generator.state = state
532
+ r2 = rg2.standard_normal(11, dtype=np.float32)
533
+ assert_array_equal(r1, r2)
534
+ assert_equal(r1.dtype, np.float32)
535
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
536
+
537
+ def test_output_fill(self):
538
+ rg = self.rg
539
+ state = rg.bit_generator.state
540
+ size = (31, 7, 97)
541
+ existing = np.empty(size)
542
+ rg.bit_generator.state = state
543
+ rg.standard_normal(out=existing)
544
+ rg.bit_generator.state = state
545
+ direct = rg.standard_normal(size=size)
546
+ assert_equal(direct, existing)
547
+
548
+ sized = np.empty(size)
549
+ rg.bit_generator.state = state
550
+ rg.standard_normal(out=sized, size=sized.shape)
551
+
552
+ existing = np.empty(size, dtype=np.float32)
553
+ rg.bit_generator.state = state
554
+ rg.standard_normal(out=existing, dtype=np.float32)
555
+ rg.bit_generator.state = state
556
+ direct = rg.standard_normal(size=size, dtype=np.float32)
557
+ assert_equal(direct, existing)
558
+
559
+ def test_output_filling_uniform(self):
560
+ rg = self.rg
561
+ state = rg.bit_generator.state
562
+ size = (31, 7, 97)
563
+ existing = np.empty(size)
564
+ rg.bit_generator.state = state
565
+ rg.random(out=existing)
566
+ rg.bit_generator.state = state
567
+ direct = rg.random(size=size)
568
+ assert_equal(direct, existing)
569
+
570
+ existing = np.empty(size, dtype=np.float32)
571
+ rg.bit_generator.state = state
572
+ rg.random(out=existing, dtype=np.float32)
573
+ rg.bit_generator.state = state
574
+ direct = rg.random(size=size, dtype=np.float32)
575
+ assert_equal(direct, existing)
576
+
577
+ def test_output_filling_exponential(self):
578
+ rg = self.rg
579
+ state = rg.bit_generator.state
580
+ size = (31, 7, 97)
581
+ existing = np.empty(size)
582
+ rg.bit_generator.state = state
583
+ rg.standard_exponential(out=existing)
584
+ rg.bit_generator.state = state
585
+ direct = rg.standard_exponential(size=size)
586
+ assert_equal(direct, existing)
587
+
588
+ existing = np.empty(size, dtype=np.float32)
589
+ rg.bit_generator.state = state
590
+ rg.standard_exponential(out=existing, dtype=np.float32)
591
+ rg.bit_generator.state = state
592
+ direct = rg.standard_exponential(size=size, dtype=np.float32)
593
+ assert_equal(direct, existing)
594
+
595
+ def test_output_filling_gamma(self):
596
+ rg = self.rg
597
+ state = rg.bit_generator.state
598
+ size = (31, 7, 97)
599
+ existing = np.zeros(size)
600
+ rg.bit_generator.state = state
601
+ rg.standard_gamma(1.0, out=existing)
602
+ rg.bit_generator.state = state
603
+ direct = rg.standard_gamma(1.0, size=size)
604
+ assert_equal(direct, existing)
605
+
606
+ existing = np.zeros(size, dtype=np.float32)
607
+ rg.bit_generator.state = state
608
+ rg.standard_gamma(1.0, out=existing, dtype=np.float32)
609
+ rg.bit_generator.state = state
610
+ direct = rg.standard_gamma(1.0, size=size, dtype=np.float32)
611
+ assert_equal(direct, existing)
612
+
613
+ def test_output_filling_gamma_broadcast(self):
614
+ rg = self.rg
615
+ state = rg.bit_generator.state
616
+ size = (31, 7, 97)
617
+ mu = np.arange(97.0) + 1.0
618
+ existing = np.zeros(size)
619
+ rg.bit_generator.state = state
620
+ rg.standard_gamma(mu, out=existing)
621
+ rg.bit_generator.state = state
622
+ direct = rg.standard_gamma(mu, size=size)
623
+ assert_equal(direct, existing)
624
+
625
+ existing = np.zeros(size, dtype=np.float32)
626
+ rg.bit_generator.state = state
627
+ rg.standard_gamma(mu, out=existing, dtype=np.float32)
628
+ rg.bit_generator.state = state
629
+ direct = rg.standard_gamma(mu, size=size, dtype=np.float32)
630
+ assert_equal(direct, existing)
631
+
632
+ def test_output_fill_error(self):
633
+ rg = self.rg
634
+ size = (31, 7, 97)
635
+ existing = np.empty(size)
636
+ with pytest.raises(TypeError):
637
+ rg.standard_normal(out=existing, dtype=np.float32)
638
+ with pytest.raises(ValueError):
639
+ rg.standard_normal(out=existing[::3])
640
+ existing = np.empty(size, dtype=np.float32)
641
+ with pytest.raises(TypeError):
642
+ rg.standard_normal(out=existing, dtype=np.float64)
643
+
644
+ existing = np.zeros(size, dtype=np.float32)
645
+ with pytest.raises(TypeError):
646
+ rg.standard_gamma(1.0, out=existing, dtype=np.float64)
647
+ with pytest.raises(ValueError):
648
+ rg.standard_gamma(1.0, out=existing[::3], dtype=np.float32)
649
+ existing = np.zeros(size, dtype=np.float64)
650
+ with pytest.raises(TypeError):
651
+ rg.standard_gamma(1.0, out=existing, dtype=np.float32)
652
+ with pytest.raises(ValueError):
653
+ rg.standard_gamma(1.0, out=existing[::3])
654
+
655
+ def test_integers_broadcast(self, dtype):
656
+ if dtype == np.bool_:
657
+ upper = 2
658
+ lower = 0
659
+ else:
660
+ info = np.iinfo(dtype)
661
+ upper = int(info.max) + 1
662
+ lower = info.min
663
+ self._reset_state()
664
+ a = self.rg.integers(lower, [upper] * 10, dtype=dtype)
665
+ self._reset_state()
666
+ b = self.rg.integers([lower] * 10, upper, dtype=dtype)
667
+ assert_equal(a, b)
668
+ self._reset_state()
669
+ c = self.rg.integers(lower, upper, size=10, dtype=dtype)
670
+ assert_equal(a, c)
671
+ self._reset_state()
672
+ d = self.rg.integers(np.array(
673
+ [lower] * 10), np.array([upper], dtype=object), size=10,
674
+ dtype=dtype)
675
+ assert_equal(a, d)
676
+ self._reset_state()
677
+ e = self.rg.integers(
678
+ np.array([lower] * 10), np.array([upper] * 10), size=10,
679
+ dtype=dtype)
680
+ assert_equal(a, e)
681
+
682
+ self._reset_state()
683
+ a = self.rg.integers(0, upper, size=10, dtype=dtype)
684
+ self._reset_state()
685
+ b = self.rg.integers([upper] * 10, dtype=dtype)
686
+ assert_equal(a, b)
687
+
688
+ def test_integers_numpy(self, dtype):
689
+ high = np.array([1])
690
+ low = np.array([0])
691
+
692
+ out = self.rg.integers(low, high, dtype=dtype)
693
+ assert out.shape == (1,)
694
+
695
+ out = self.rg.integers(low[0], high, dtype=dtype)
696
+ assert out.shape == (1,)
697
+
698
+ out = self.rg.integers(low, high[0], dtype=dtype)
699
+ assert out.shape == (1,)
700
+
701
+ def test_integers_broadcast_errors(self, dtype):
702
+ if dtype == np.bool_:
703
+ upper = 2
704
+ lower = 0
705
+ else:
706
+ info = np.iinfo(dtype)
707
+ upper = int(info.max) + 1
708
+ lower = info.min
709
+ with pytest.raises(ValueError):
710
+ self.rg.integers(lower, [upper + 1] * 10, dtype=dtype)
711
+ with pytest.raises(ValueError):
712
+ self.rg.integers(lower - 1, [upper] * 10, dtype=dtype)
713
+ with pytest.raises(ValueError):
714
+ self.rg.integers([lower - 1], [upper] * 10, dtype=dtype)
715
+ with pytest.raises(ValueError):
716
+ self.rg.integers([0], [0], dtype=dtype)
717
+
718
+
719
+ class TestMT19937(RNG):
720
+ @classmethod
721
+ def setup_class(cls):
722
+ cls.bit_generator = MT19937
723
+ cls.advance = None
724
+ cls.seed = [2 ** 21 + 2 ** 16 + 2 ** 5 + 1]
725
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
726
+ cls.initial_state = cls.rg.bit_generator.state
727
+ cls.seed_vector_bits = 32
728
+ cls._extra_setup()
729
+ cls.seed_error = ValueError
730
+
731
+ def test_numpy_state(self):
732
+ nprg = np.random.RandomState()
733
+ nprg.standard_normal(99)
734
+ state = nprg.get_state()
735
+ self.rg.bit_generator.state = state
736
+ state2 = self.rg.bit_generator.state
737
+ assert_((state[1] == state2['state']['key']).all())
738
+ assert_((state[2] == state2['state']['pos']))
739
+
740
+
741
+ class TestPhilox(RNG):
742
+ @classmethod
743
+ def setup_class(cls):
744
+ cls.bit_generator = Philox
745
+ cls.advance = 2**63 + 2**31 + 2**15 + 1
746
+ cls.seed = [12345]
747
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
748
+ cls.initial_state = cls.rg.bit_generator.state
749
+ cls.seed_vector_bits = 64
750
+ cls._extra_setup()
751
+
752
+
753
+ class TestSFC64(RNG):
754
+ @classmethod
755
+ def setup_class(cls):
756
+ cls.bit_generator = SFC64
757
+ cls.advance = None
758
+ cls.seed = [12345]
759
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
760
+ cls.initial_state = cls.rg.bit_generator.state
761
+ cls.seed_vector_bits = 192
762
+ cls._extra_setup()
763
+
764
+
765
+ class TestPCG64(RNG):
766
+ @classmethod
767
+ def setup_class(cls):
768
+ cls.bit_generator = PCG64
769
+ cls.advance = 2**63 + 2**31 + 2**15 + 1
770
+ cls.seed = [12345]
771
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
772
+ cls.initial_state = cls.rg.bit_generator.state
773
+ cls.seed_vector_bits = 64
774
+ cls._extra_setup()
775
+
776
+
777
+ class TestPCG64DXSM(RNG):
778
+ @classmethod
779
+ def setup_class(cls):
780
+ cls.bit_generator = PCG64DXSM
781
+ cls.advance = 2**63 + 2**31 + 2**15 + 1
782
+ cls.seed = [12345]
783
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
784
+ cls.initial_state = cls.rg.bit_generator.state
785
+ cls.seed_vector_bits = 64
786
+ cls._extra_setup()
787
+
788
+
789
+ class TestDefaultRNG(RNG):
790
+ @classmethod
791
+ def setup_class(cls):
792
+ # This will duplicate some tests that directly instantiate a fresh
793
+ # Generator(), but that's okay.
794
+ cls.bit_generator = PCG64
795
+ cls.advance = 2**63 + 2**31 + 2**15 + 1
796
+ cls.seed = [12345]
797
+ cls.rg = np.random.default_rng(*cls.seed)
798
+ cls.initial_state = cls.rg.bit_generator.state
799
+ cls.seed_vector_bits = 64
800
+ cls._extra_setup()
801
+
802
+ def test_default_is_pcg64(self):
803
+ # In order to change the default BitGenerator, we'll go through
804
+ # a deprecation cycle to move to a different function.
805
+ assert_(isinstance(self.rg.bit_generator, PCG64))
806
+
807
+ def test_seed(self):
808
+ np.random.default_rng()
809
+ np.random.default_rng(None)
810
+ np.random.default_rng(12345)
811
+ np.random.default_rng(0)
812
+ np.random.default_rng(43660444402423911716352051725018508569)
813
+ np.random.default_rng([43660444402423911716352051725018508569,
814
+ 279705150948142787361475340226491943209])
815
+ with pytest.raises(ValueError):
816
+ np.random.default_rng(-1)
817
+ with pytest.raises(ValueError):
818
+ np.random.default_rng([12345, -1])
LTA_openwebtext_dualt/mini_owt_logdirichlet/logs/infer_not5_bottleneck128_170k_decode32_ema_20260611/lr3e3.log ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ checkpoint=runs/owt_t5_elftokenized_full_len1024_C1_to_1024_pow1_d768_l12_h12_gbs512_2x8gpu_50ep_lr3e3_ema0p9999_elfopt_not5_bottleneck128_unfixed_norm_stateprobadd_selfcond_ce_fast_20260609_230847/step_170000.pt
2
+ use_ema=1
3
+ step=170000
4
+ decode_steps=32
5
+ n=64 chunk_n=8 gpu=2
6
+ out_base=/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/docs/lta_samples/metrics_20260611
7
+ [2026-06-11T21:37:16+00:00] infer step=170000 decode=32 -> /e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/docs/lta_samples/metrics_20260611/owt_t5_not5_bottleneck128_norm_stateprobadd_selfcond_ce_fast_lr3e3_ema0p9999_step170000_ema_sc1p0_decode32_n64
8
+ [2026-06-11T21:37:16+00:00] run decode=32 chunk=0 n=8 seed=123
9
+ [2026-06-11T21:37:22+00:00] done decode=32 chunk=0
10
+ [2026-06-11T21:37:22+00:00] run decode=32 chunk=1 n=8 seed=124
11
+ [2026-06-11T21:37:29+00:00] done decode=32 chunk=1
12
+ [2026-06-11T21:37:29+00:00] run decode=32 chunk=2 n=8 seed=125
13
+ [2026-06-11T21:37:36+00:00] done decode=32 chunk=2
14
+ [2026-06-11T21:37:36+00:00] run decode=32 chunk=3 n=8 seed=126
15
+ [2026-06-11T21:37:43+00:00] done decode=32 chunk=3
16
+ [2026-06-11T21:37:43+00:00] run decode=32 chunk=4 n=8 seed=127
17
+ [2026-06-11T21:37:50+00:00] done decode=32 chunk=4
18
+ [2026-06-11T21:37:50+00:00] run decode=32 chunk=5 n=8 seed=128
19
+ [2026-06-11T21:37:57+00:00] done decode=32 chunk=5
20
+ [2026-06-11T21:37:57+00:00] run decode=32 chunk=6 n=8 seed=129
21
+ [2026-06-11T21:38:04+00:00] done decode=32 chunk=6
22
+ [2026-06-11T21:38:04+00:00] run decode=32 chunk=7 n=8 seed=130
23
+ [2026-06-11T21:38:11+00:00] done decode=32 chunk=7
24
+ merged 64 samples -> /e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/docs/lta_samples/metrics_20260611/owt_t5_not5_bottleneck128_norm_stateprobadd_selfcond_ce_fast_lr3e3_ema0p9999_step170000_ema_sc1p0_decode32_n64/sc1p0/samples64.txt
25
+ loading scorer /e2e-data/evad-tech-vla/wanghan58/models/flowtext_scorers/gpt2-large-standard dtype=fp32 device=cuda
26
+ run kind ppl mean_entropy distinct_1 distinct_2 top_token_mass eos_rows eos_total ppl_tokens t5_tokens path
27
+ sc1p0 raw_full 32.86594428444645 5.137365192808393 0.09408659895050174 0.5231767756586316 0.025577684352655967 62 63 60706 65174 /e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/docs/lta_samples/metrics_20260611/owt_t5_not5_bottleneck128_norm_stateprobadd_selfcond_ce_fast_lr3e3_ema0p9999_step170000_ema_sc1p0_decode32_n64/sc1p0
28
+ sc1p0 pre_eos 37.55003027517274 5.1556471729724 0.09639842165663172 0.5360006288319447 0.026206159312068666 0 0 57550 63611 /e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/docs/lta_samples/metrics_20260611/owt_t5_not5_bottleneck128_norm_stateprobadd_selfcond_ce_fast_lr3e3_ema0p9999_step170000_ema_sc1p0_decode32_n64/sc1p0
29
+ [2026-06-11T21:38:24+00:00] done