我想通過為公司生成 100 個隨機 4 字母名稱和相應的隨機股價來構建 100 個隨機生成的股價串列。
到目前為止,我已經撰寫了以下代碼,它提供了一個隨機的 4 個字母的公司名稱:
import string
import random
def stock_generator():
return ''.join(random.choices(string.ascii_uppercase, k=4))
stock_name_generator()
# OUTPUT
'FIQG'
但是,我想生成 100 個隨機股價。是否可以在創建串列后保持串列不變(即使用某種種子)?
uj5u.com熱心網友回復:
import string
import random
random.seed(0)
def stock_generator(n=100):
return [(''.join(random.choices(string.ascii_uppercase, k=4)), random.random()) for _ in range(n)]
stocks = stock_generator()
print(stocks)
您可以使用此生成器運算式生成任意數量的隨機股票。stock_generator()回傳一個由 4 個字母組成的隨機名稱和一個介于 0 和 1 之間的亂數的元組串列。我認為實際價格看起來會有所不同,但這是您開始的方式。
random.seed()讓您復制隨機生成。
編輯:額外要求的平均股價
average_price = sum(stock[1] for stock in stocks) / len(stocks)
stocks[i][1]可用于訪問名稱/價格元組中的價格。
uj5u.com熱心網友回復:
我認為這種方法將適用于您的任務。
import string
import random
random.seed(0)
def stock_generator():
return (''.join(random.choices(string.ascii_uppercase, k=4)), random.random())
parse_result =[]
n=100
for i in range(0,n):
parse_result.append(stock_generator())
print(parse_result)
uj5u.com熱心網友回復:
您可以通過更新before來生成一致的n隨機樣本。以下是有關如何生成這些名稱串列的示例(10 個示例):seedrandomshuffle
import random, copy
sorted_list = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
i = 0 #counter
n = 10 # number of samples
l = 4 # length of samples
myset = set()
while i < n:
shuffled_list = copy.deepcopy(sorted_list)
random.seed(i)
random.shuffle(shuffled_list)
name = tuple(shuffled_list[:l])
if name not in myset:
myset.add(name)
i =1
print(sorted([''.join(list(x)) for x in myset]))
# ['CKEM', 'DURP', 'GQXO', 'JFWI', 'JNRX', 'MNSV', 'OAXS', 'TIFX', 'VLZS', 'XYLK']
然后您可以隨機生成n價格數量并創建一個將每個名稱系結到價格list的tuples:
names = sorted([''.join(list(x)) for x in myset])
int_list = random.sample(range(1, 100), n)
prices = [x/10 for x in int_list]
names_and_prices = []
for name, price in zip(names,prices):
names_and_prices.append((name,price))
# [('CKEM', 1.5), ('DURP', 1.7), ('GQXO', 6.5), ('JFWI', 7.6), ('JNRX', 0.9), ('MNSV', 8.9), ('OAXS', 5.0), ('TIFX', 9.6), ('VLZS', 1.4), ('XYLK', 3.8)]
uj5u.com熱心網友回復:
嘗試:
import string
import random
def stock_generator(num):
names = []
for n in range(num):
x = ''.join(random.choices(string.ascii_uppercase, k=4))
names.append(x)
return names
print(stock_generator(100))
每次使用您選擇的數字作為引數呼叫函式 stock_generator 時,您將生成所需的股票名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421249.html
標籤:
上一篇:具有新列的重復行
