簡體   English   中英

在 Python 中使用 Random.seed()、'for' 和乘法輸出 30-35 之間的隨機數

[英]Output random number between 30-35 using Random.seed(), 'for' and multiplication in Python

我是編程新手。 我有一個任務要編寫一個代碼,該代碼將輸出 30 到 35 之間的隨機數。此代碼需要使用random.seed() 、一個for語句和一個乘法。 我知道random.seed([x])生成一個初始值,可以在代碼的后續部分中使用。 但是,我無法弄清楚在獲得隨機值后如何進行:

import random
random.seed(70)
print(random.random()) # This returns a value of 0.909769237923872

如何使用此值生成 30 到 35 之間的隨機值?

注意:如果沒有上面的具體說明,我已經能夠編寫兩個按需要運行的代碼,所以我不是在尋找編寫代碼的替代方法。

這是另一種方法:

import random
#initial random seed based on current system time
#https://docs.python.org/2/library/random.html#random.seed

random.seed(9) #We set this so random is repeatable in testing
random_range = [30, 31, 32, 33, 34, 35]

while True:
     num = int(round(random.random(),1)*100)
     if num in random_range:
        print num
        break

種子設置為 9,所以如果你一遍又一遍地運行它,你會得到相同的隨機值......因此設置了一個種子。 請注意,運行多次迭代是因為提到不使用像 random.choice 這樣的選擇

import random

def problem():

    random.seed(70)
    list_no=[]
    i = 0
    while(i<10):
        x = (5*random.random()+30)
        list_no.append(x)
        i=i+1
    print(list_no)   

random.seed(70)設置為確保我們生成相同的隨機數。

list_no=[]是一個空列表,用於以列表的形式保存值(輸出)。

random.random()從 0-1 生成值,因此通過相乘,我們可以將隨機數展開以覆蓋 0 到 5 的范圍。通過相加,您可以將這些數字移動到所需的 30 到 35 的范圍,該范圍正在被存儲在 x。

存儲值后,我們將結果附加到 list_no 並遞增 i。 循環執行后,我們正在打印列表

這是在任意兩個浮點數之間查找隨機數的通用代碼。

from random import random, seed

def rand_no(x_lower, x_upper):
    '''
    Function to generate random number
    x_lower     :   lower bound value
    x_upper     :   upper bound value
    '''
    random_number = x_lower + (x_upper - x_lower)*random()
    return random_number

if __name__ == '__main__':

    seed_value = 70 # Seed value for random generator
    seed(seed_value)

    print('Printing a list of 10 random numbers\n')
    for i in range(10):
        sample_value = rand_no(30, 35)
        print("Number %d = %4.2f"%(i+1, sample_value))

輸出如下:

Printing a list of 10 random numbers

Number 1 = 34.55
Number 2 = 31.47
Number 3 = 32.30
Number 4 = 30.68
Number 5 = 34.98
Number 6 = 30.77
Number 7 = 33.37
Number 8 = 32.99
Number 9 = 33.57
Number 10 = 32.05
import random

def random_no():
    # Making a list of 10 random reals numbers between 30 and 35
    random.seed(70)
    random_list=[]
    for i in range(10):
        x=(5*random.random()+30)
        random_list.append(x)
    print(random_list)  

random 是在頂部導入的包

因為我們(我和你)無法實現隨機數生成的邏輯(或目前超出我們技能的任何其他用例),我們使用像這樣的包

種子使相同的隨機數出現,因此答案與測試用例沒有區別

試試這個方法:

import random
def problem2_4():
    A = []
    random.seed(70)
    for i in range(0,10):
        A.append(5*random.random()+30)
        # it gives in a range of 0-1 so multiplied by 5
        # we need in range of 30-35 so we add it to 30
        # if 0.000000001 ~30.000000005 it is still in 30-35 range
        # if 0.999999901 ~34.999999505 it is still in 30-35 range
    # print the list of numbers generated at random
    print(A)

試試這個代碼:

import random
def function():
    random.seed(70)
    for i in range(0,10):
        print(5*random.random()+30)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM