生成 100 个随机股价
Generating 100 Random Share Prices
我想通过为公司生成 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 个随机股价。可以在列表创建后保持列表不变的同时执行此操作(即使用某种种子)?
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()
returns 随机 4 个字母名称的元组列表和 0 到 1 之间的随机数。我认为实际价格看起来会有所不同,但这就是您的开始方式。
random.seed()
让您复制随机生成。
编辑:额外要求的平均股价
average_price = sum(stock[1] for stock in stocks) / len(stocks)
stocks[i][1]
可用于访问 name/price 元组中的价格。
尝试:
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 时,您将生成所需的股票名称。
我认为这种方法适合您的任务。
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)
您可以通过在 shuffle
之前更新 random
的 seed
来生成一致的 n
随机样本。下面是一个关于如何生成这些名称列表的示例(10 个样本):
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
个 tuple
将每个名称绑定到一个价格:
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)]
我想通过为公司生成 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 个随机股价。可以在列表创建后保持列表不变的同时执行此操作(即使用某种种子)?
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()
returns 随机 4 个字母名称的元组列表和 0 到 1 之间的随机数。我认为实际价格看起来会有所不同,但这就是您的开始方式。
random.seed()
让您复制随机生成。
编辑:额外要求的平均股价
average_price = sum(stock[1] for stock in stocks) / len(stocks)
stocks[i][1]
可用于访问 name/price 元组中的价格。
尝试:
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 时,您将生成所需的股票名称。
我认为这种方法适合您的任务。
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)
您可以通过在 shuffle
之前更新 random
的 seed
来生成一致的 n
随机样本。下面是一个关于如何生成这些名称列表的示例(10 个样本):
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
个 tuple
将每个名称绑定到一个价格:
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)]