Add files using upload-large-folder tool
Browse files- LTA_openwebtext_dualt/logs/lta_lm1b_classic_dirichlet_len1024_gbs512_8gpu_20k_save1k_20260523_watcher.sh +78 -0
- 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
- 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
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/__init__.py +0 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/__init__.py +0 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_direct.py +518 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_extending.py +118 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_generator_mt19937.py +0 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_generator_mt19937_regressions.py +165 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_random.py +1750 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_randomstate.py +2121 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_randomstate_regression.py +216 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_regression.py +149 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_seed_sequence.py +80 -0
- LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/random/tests/test_smoke.py +818 -0
- 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
|