帮我写一个随机生成人名字的PYTHON代码
时间: 2023-08-20 15:16:02 浏览: 314
可以Python的 `random` 模块和随机生成器来生成随机名字。以下是一个示例代码:
```python
import random
# 定义姓氏列表和名字列表
surnames = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈']
names = ['小明', '小红', '小刚', '小丽', '小芳', '小伟', '小兵', '小雅', '小雨', '小乔']
# 随机生成名字
surname = random.choice(surnames)
name = random.choice(names)
# 输出随机生成的名字
print(surname + name)
```
在这个例子中,我们定义了一个姓氏列表和一个名字列表。然后使用 `random.choice()` 函数从列表中随机选择一个姓氏和一个名字,最后将它们拼接在一起并输出。
你可以根据自己的需要修改姓氏列表和名字列表,并将代码封装到一个函数中,方便在其他地方调用。
相关问题
有两个生产者:偶数生产者及奇数生产者,其中偶数生产者责任生产顺序0,2,4,6,8…,奇数生产者责任生1,3,5,7…。数据收集者责任打包一个数据,每个数据由一个偶数和一个奇数组成,并且和一个数据中的奇偶数相差1,比如0和1组成一个偶数,2和3构成一个数据。因此数据收集者必须承担责任等待当前轮次奇偶数据都到了,才能生成一个数据,并放入队列。消费者每次取出一个数据,并打印。偶数生成者和奇数生成人每次生产一个数后随机休眠(sleep)一段时间,范围是:100ms-150ms。
好的,这是一个经典的生产者消费者问题,我们可以使用多线程和队列来解决。具体实现如下:
首先,我们需要创建三个线程:偶数生产者线程、奇数生产者线程和数据收集者线程。还需要一个缓存队列,用于存放数据,这里我们使用Python内置的queue.Queue来实现。
偶数生产者线程可以使用一个循环来实现,每次生产一个偶数后随机休眠一段时间,将生产的偶数放入缓存队列中。奇数生产者线程同理。
数据收集者线程需要等待当前轮次的奇偶数据都到了,才能生产一个数据,并放入缓存队列中。我们可以使用一个变量来记录当前轮次的奇偶数据是否都已经到了,当都到了之后,就可以将奇偶数据合并成一个数据,放入缓存队列中。
消费者线程可以使用一个循环来实现,每次从缓存队列中取出一个数据,并打印。
具体代码实现如下:
```python
import queue
import threading
import time
import random
# 缓存队列
data_queue = queue.Queue()
# 当前轮次奇偶数据是否都已经到了
is_even_ready = False
is_odd_ready = False
# 当前轮次的奇偶数
even_num = None
odd_num = None
# 偶数生产者线程
def even_producer():
global is_even_ready, even_num
while True:
time.sleep(random.uniform(0.1, 0.15)) # 随机休眠
even_num = even_num + 2 if even_num is not None else 0 # 生产偶数
data_queue.put(even_num) # 将偶数放入缓存队列
is_even_ready = True # 偶数已准备好
if is_odd_ready: # 如果奇数也已准备好,则生成一个数据
data = (even_num, odd_num)
data_queue.put(data) # 将数据放入缓存队列
is_even_ready, is_odd_ready = False, False # 重置标志位
# 奇数生产者线程
def odd_producer():
global is_odd_ready, odd_num
while True:
time.sleep(random.uniform(0.1, 0.15)) # 随机休眠
odd_num = odd_num + 2 if odd_num is not None else 1 # 生产奇数
data_queue.put(odd_num) # 将奇数放入缓存队列
is_odd_ready = True # 奇数已准备好
if is_even_ready: # 如果偶数也已准备好,则生成一个数据
data = (even_num, odd_num)
data_queue.put(data) # 将数据放入缓存队列
is_even_ready, is_odd_ready = False, False # 重置标志位
# 数据收集者线程
def data_collector():
global is_even_ready, is_odd_ready, even_num, odd_num
while True:
if not is_even_ready or not is_odd_ready: # 如果奇偶数据还没准备好,则继续等待
continue
data = (even_num, odd_num)
data_queue.put(data) # 将数据放入缓存队列
is_even_ready, is_odd_ready = False, False # 重置标志位
# 消费者线程
def consumer():
while True:
data = data_queue.get() # 从缓存队列中取出一个数据
print(data) # 打印数据
# 创建偶数生产者、奇数生产者、数据收集者和消费者线程
even_num = None
odd_num = None
even_thread = threading.Thread(target=even_producer)
odd_thread = threading.Thread(target=odd_producer)
data_thread = threading.Thread(target=data_collector)
consumer_thread = threading.Thread(target=consumer)
# 启动线程
even_thread.start()
odd_thread.start()
data_thread.start()
consumer_thread.start()
```
这样,我们就成功地实现了一个多线程的偶数奇数生产者和数据收集者模型。
通过TensorFlow 2.0搭建对抗网络模型,利用公开的人脸数据库LFW生成人脸代码
TensorFlow 2.0提供了Keras API,使得搭建对抗网络模型变得更加简单。以下是一个简单的GAN模型的代码示例,用于生成人脸:
```python
import tensorflow as tf
from tensorflow.keras.layers import Input, Dense, Reshape, Flatten, Conv2D, Conv2DTranspose, LeakyReLU
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
import numpy as np
# 定义生成器模型
def build_generator(latent_dim):
inputs = Input(shape=(latent_dim,))
x = Dense(128 * 7 * 7)(inputs)
x = Reshape((7, 7, 128))(x)
x = Conv2DTranspose(128, kernel_size=4, strides=2, padding='same')(x)
x = LeakyReLU(alpha=0.2)(x)
x = Conv2DTranspose(128, kernel_size=4, strides=2, padding='same')(x)
x = LeakyReLU(alpha=0.2)(x)
x = Conv2DTranspose(128, kernel_size=4, strides=2, padding='same')(x)
x = LeakyReLU(alpha=0.2)(x)
x = Conv2D(1, kernel_size=7, activation='tanh', padding='same')(x)
outputs = x
model = Model(inputs=inputs, outputs=outputs)
return model
# 定义判别器模型
def build_discriminator(input_shape):
inputs = Input(shape=input_shape)
x = Conv2D(64, kernel_size=3, strides=2, padding='same')(inputs)
x = LeakyReLU(alpha=0.2)(x)
x = Conv2D(128, kernel_size=3, strides=2, padding='same')(x)
x = LeakyReLU(alpha=0.2)(x)
x = Conv2D(256, kernel_size=3, strides=2, padding='same')(x)
x = LeakyReLU(alpha=0.2)(x)
x = Flatten()(x)
x = Dense(1, activation='sigmoid')(x)
outputs = x
model = Model(inputs=inputs, outputs=outputs)
return model
# 定义GAN模型
def build_gan(generator, discriminator):
discriminator.trainable = False
inputs = Input(shape=(latent_dim,))
outputs = discriminator(generator(inputs))
model = Model(inputs=inputs, outputs=outputs)
return model
# 数据预处理
def preprocess_data(data):
data = data / 255.0
data = np.expand_dims(data, axis=-1)
return data
# 加载LFW数据集
lfw = tf.keras.datasets.lfw
(train_images, _), (_, _) = lfw.load_data()
# 数据预处理
train_images = preprocess_data(train_images)
# 定义参数
latent_dim = 100
input_shape = (64, 64, 1)
batch_size = 64
epochs = 10000
# 构建生成器和判别器
generator = build_generator(latent_dim)
discriminator = build_discriminator(input_shape)
# 构建GAN模型
gan = build_gan(generator, discriminator)
# 编译GAN模型
optimizer = Adam(lr=0.0002, beta_1=0.5)
gan.compile(loss='binary_crossentropy', optimizer=optimizer)
# 训练GAN模型
for epoch in range(epochs):
# 随机采样噪声
noise = np.random.normal(0, 1, (batch_size, latent_dim))
# 生成假图片
fake_images = generator.predict(noise)
# 采样真图片
idx = np.random.randint(0, train_images.shape[0], batch_size)
real_images = train_images[idx]
# 训练判别器
d_loss_real = discriminator.train_on_batch(real_images, np.ones((batch_size, 1)))
d_loss_fake = discriminator.train_on_batch(fake_images, np.zeros((batch_size, 1)))
d_loss = 0.5 * (d_loss_real + d_loss_fake)
# 训练生成器
noise = np.random.normal(0, 1, (batch_size, latent_dim))
g_loss = gan.train_on_batch(noise, np.ones((batch_size, 1)))
# 打印损失值
print("Epoch %d: D loss = %f, G loss = %f" % (epoch, d_loss, g_loss))
# 保存生成器模型
generator.save('generator.h5')
```
在上述代码中,我们使用了LFW数据集来训练GAN模型,生成人脸。首先,我们定义了生成器和判别器模型,然后使用这两个模型构建了GAN模型。接着,我们训练了这个GAN模型来生成人脸。最后,我们保存了训练好的生成器模型,以便后续使用。
阅读全文