电脑版随机数生成器:0-***动态生成与重复控制

版权申诉
0 下载量 134 浏览量 更新于2024-10-26 收藏 654KB ZIP 举报
资源摘要信息:"random.zip 随机数生成器电脑版" 在探索这个标题为"random.zip 随机数生成器电脑版"的IT资源时,我们首先需要了解随机数生成器(Random Number Generator, RNG)的基本概念,以及C++中实现这一功能的相关知识点。 随机数生成器是计算机程序中用于生成一系列随机数的算法。这些数可以用于模拟、测试、加密等多种场景。随机数生成器分为两种:伪随机数生成器(Pseudo-RNG)和真随机数生成器(True RNG)。伪随机数生成器通过一个确定的算法生成看似随机的数字序列,而真随机数生成器依赖于物理过程或外部随机源来生成真正的随机数。 在标题中提到的"支持0-***随机数",意味着这款随机数生成器能够生成介于0到***(包括两端)之间的整数,这是一个范围非常广的数域,适用于多种应用场景。 "动态生成"则暗示了随机数的生成是一个实时的过程,可以根据用户的请求或程序的需要即时产生新的随机数。 "重复/非重复数字"的描述指向了随机数生成器的一个重要特性,即是否能够生成唯一的随机数序列,不会有重复的数字。非重复的随机数序列在很多场景下是必需的,比如抽奖、抽签等,以确保结果的公平性。 针对这个资源的描述,我们可以进一步分析以下C++相关的知识点: 1. C++中的随机数生成库:C++11标准中引入了<random>头文件,该头文件提供了包括随机数引擎和分布在内的多种工具,用于生成高质量的随机数序列。 2. 随机数引擎(Random Number Engines):在C++中,随机数引擎是生成伪随机数的基本组件。引擎本身能够生成一系列随机的原始数字,但这些数字并不适合直接使用。为了得到适合的随机数,通常需要将这些数字用随机数分布来格式化。 3. 随机数分布(Random Number Distributions):这些分布将随机数引擎产生的原始数字转换成符合特定数学规律的序列。例如,可以使用均匀分布(uniform distribution)来生成等概率的随机数,或者正态分布(normal distribution)来生成符合高斯分布的随机数。 4. 生成非重复的随机数序列:在C++中,可以通过使用集合容器(如std::set或std::unordered_set)来确保生成的随机数序列中的每个数字是唯一的。或者,也可以通过算法来检测重复并相应地调整生成逻辑。 5. 编写一个随机数生成器:为了实现上述功能,开发者需要编写代码来初始化随机数引擎和分布,然后根据用户的需求生成所需的随机数序列。对于非重复序列,开发者需要在每次生成新的随机数后检查并确保该数未被包含在已生成的序列中。 在实际应用中,一个随机数生成器的实现可能还会涉及到错误处理、性能优化、内存管理等编程实践,以确保软件的质量和效率。 通过这些详细的解析,我们可以看到"random.zip 随机数生成器电脑版"这款资源不仅仅是一个简单的工具,它背后蕴含了丰富的计算机科学理论和编程实践知识。开发者或用户若能掌握这些知识,将能更好地理解和使用这个资源,甚至可以在此基础上开发出更加复杂的随机数应用场景。

np.random.seed(8) scores = np.random.randint(50, 100, size=(10, 5)) print(scores) result2 = scores[5, 2] print(f'学号为 105 的学生的英语成绩{result2}') result3 = scores[[0, 2, 5, 9], 0:3] print(result3) idx = np.where(scores >= 90) rows = idx[0] cols = idx[1] for rc in zip(rows, cols): data = scores[rc] print(f'rc = {rc}, data = {data}') number = set([100 + row for row in rows]) print(number) scores_1 = scores.copy() result5 = np.sort(scores_1, axis=0) print(f'按各门课程的成绩排序:\n{result5}') scores_2 = scores.copy() result6 = np.sort(scores_2, axis=1) print(f'按每名学生的成绩排序:\n{result6}') result7_mean = np.mean(scores, axis=0) result7_max = np.max(scores, axis=0) result7_min = np.min(scores, axis=0) print(f'每门课程的平均分:{result7_mean},最高分:{result7_max},最低分:{result7_min}') result8_max = np.max(scores, axis=1) result8_min = np.min(scores, axis=1) print(f'每名学生的最高分:{result8_max},最低分:{result8_min}') result_min = np.min(scores) idx = np.where(scores == result_min) rows = idx[0] cols = idx[1] for rc in zip(rows, cols): data = scores[rc] print(f'学生学号为 10{str(rc[0])},课程{course[rc[1]]}, 最低分为 {data}') result_max = np.max(scores) idx = np.where(scores == result_max) rows = idx[0] cols = idx[1] for rc in zip(rows, cols): data = scores[rc] print(f'学生学号为 10{str(rc[0])},课程{course[rc[1]]}, 最高分为 {data}') weight_list = [0.25, 0.25, 0.20, 0.15, 0.15] weight = np.array(weight_list) total_score = np.matmul(scores, weight) total_score = np.round(total_score, 2) print(f'每名学生的总成绩:\n{total_score}') print(type(total_score)) total_score1 = total_score.copy() result = sorted(total_score1, reverse=True) print(f'最高的 3 个总分:\n{result[:3]}')

2023-06-12 上传

import tensorflow as tf from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D, Dropoutfrom tensorflow.keras import Model​# 在GPU上运算时,因为cuDNN库本身也有自己的随机数生成器,所以即使tf设置了seed,也不会每次得到相同的结果tf.random.set_seed(100)​mnist = tf.keras.datasets.mnist(X_train, y_train), (X_test, y_test) = mnist.load_data()X_train, X_test = X_train/255.0, X_test/255.0​# 将特征数据集从(N,32,32)转变成(N,32,32,1),因为Conv2D需要(NHWC)四阶张量结构X_train = X_train[..., tf.newaxis]    X_test = X_test[..., tf.newaxis]​batch_size = 64# 手动生成mini_batch数据集train_ds = tf.data.Dataset.from_tensor_slices((X_train, y_train)).shuffle(10000).batch(batch_size)test_ds = tf.data.Dataset.from_tensor_slices((X_test, y_test)).batch(batch_size)​class Deep_CNN_Model(Model):    def __init__(self):        super(Deep_CNN_Model, self).__init__()        self.conv1 = Conv2D(32, 5, activation='relu')        self.pool1 = MaxPool2D()        self.conv2 = Conv2D(64, 5, activation='relu')        self.pool2 = MaxPool2D()        self.flatten = Flatten()        self.d1 = Dense(128, activation='relu')        self.dropout = Dropout(0.2)        self.d2 = Dense(10, activation='softmax')        def call(self, X):    # 无需在此处增加training参数状态。只需要在调用Model.call时,传递training参数即可        X = self.conv1(X)        X = self.pool1(X)        X = self.conv2(X)        X = self.pool2(X)        X = self.flatten(X)        X = self.d1(X)        X = self.dropout(X)   # 无需在此处设置training状态。只需要在调用Model.call时,传递training参数即可        return self.d2(X)​model = Deep_CNN_Model()loss_object = tf.keras.losses.SparseCategoricalCrossentropy()optimizer = tf.keras.optimizers.Adam()​train_loss = tf.keras.metrics.Mean(name='train_loss')train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')test_loss = tf.keras.metrics.Mean(name='test_loss')test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='test_accuracy')​# TODO:定义单批次的训练和预测操作@tf.functiondef train_step(images, labels):       ......    @tf.functiondef test_step(images, labels):       ......    # TODO:执行完整的训练过程EPOCHS = 10for epoch in range(EPOCHS)补全代码

2023-06-13 上传