csv Python中的种子范围问题

o8x7eapl  于 2023-07-31  发布在  Python
关注(0)|答案(1)|浏览(93)

在下面的代码中,我想在start_seedend_seed指定的范围内选择随机整数。但显示有错误。我该如何解决这个问题?

from scipy.stats import truncnorm
import numpy as np
import os
import csv

Runs = 5
Nodes = 1012
start_seed = 1
end_seed = 1e100
desired_mean = 50.0
desired_variance = 5.0

def function(run):
    parent_folder = str(run + 1)
    os.mkdir(parent_folder)

    

    seed = np.random.randint(start_seed, end_seed + 1)
    np.random.seed(seed)
    # Generate truncated normal random numbers with specified mean and variance
    lower_bound = desired_mean - 2 * np.sqrt(desired_variance)
    upper_bound = desired_mean + 2 * np.sqrt(desired_variance)
    r = (1e-6) * truncnorm.rvs((lower_bound - desired_mean) / np.sqrt(desired_variance), (upper_bound - desired_mean) / np.sqrt(desired_variance), loc=desired_mean, scale=np.sqrt(desired_variance), size=Nodes)
    

    
    
    sort_r = np.sort(r)
    r1 = sort_r[::-1]

    r1 = r1.reshape(1, Nodes)

    r2 = r.copy()
    np.random.shuffle(r2.ravel()[1:])
    r2 = r2.reshape(1, Nodes)

    maximum = r2.max()
    indice1 = np.where(r2 == maximum)
    r2[indice1] = r2[0][0]
    r2[0][0] = maximum
    r2[0][Nodes-1] = maximum

    mean = np.mean(r)
    var = np.var(r)
    std = np.std(r)

    # Calculate the rounded mean and variance for the file name
    rounded_mean = "{:.1f}".format(desired_mean)
    rounded_variance = "{:.1f}".format(desired_variance)

    with open(os.path.join(parent_folder, rf"Inv_Radius_{Nodes}_{rounded_mean}_{rounded_variance}ND.csv"), 'w+') as f:
        np.random.shuffle(r2[0][1:-1])
        inv_r = 1/r2
        writer = csv.writer(f)
        writer.writerows(inv_r)

for x in range(Runs):
    function(x)

字符串
错误是

Traceback (most recent call last):

  File ~\AppData\Local\anaconda3\lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
    exec(code, globals, locals)

  File c:\users\debanikb\onedrive - technion\research_technion\python_pnm\surfactant a-d\testing\var_5\normal_6.py:67
    function(x)

  File c:\users\debanikb\onedrive - technion\research_technion\python_pnm\surfactant a-d\testing\var_5\normal_6.py:26 in function
    seed = np.random.randint(start_seed, end_seed + 1)

  File mtrand.pyx:746 in numpy.random.mtrand.RandomState.randint

  File _bounded_integers.pyx:1336 in numpy.random._bounded_integers._rand_int32

ValueError: high is out of bounds for int32

r7xajy2e

r7xajy2e1#

排成一行

seed = np.random.randint(start_seed, end_seed + 1)

字符串
你想用它来生成种子

start_seed = 1
end_seed = 1e100


错误消息告诉您ValueError: high is out of bounds for int32。您的end_seed = 1e100是问题所在,因为它超出了int32数据类型能够容纳的范围。numpy中int32数据类型的范围是-2147483648到2147483647。
所以end_seed的值不能超过2147483647。那么它就不会再抛出错误了。

相关问题