首页 > 其他分享 >在全为1的数组中随机三个位置为0

在全为1的数组中随机三个位置为0

时间:2024-06-20 19:00:05浏览次数:11  
标签:全为 std 顺序 随机数 元素 shufle 随机 数组 include

std:random_device 是一个在 C++ 标准库中用于生成非确定性随机数的类,头文件<random>。它通常用于为随机数生成器(如std:mt19937 )提供种子,以确保每次程序运行时都能产生不同的随机数序列。 


std:iota 是 C++ 标准库中的一个函数,定义在<numeric>头文件中。它用于给容器中的元素赋值,从指定的开始值开始,并逐个递增。


std.shufle 函数的作用是对给定范围内的元素进行随机重排。(使用 std:shufle 函数打乱容器中元素的顺序后,原始顺序是无法直接复原的,因为 std:shufle 不记录任何关于元素原始顺序的信息。如果需要在打乱后能够恢复到原始顺序,可以使用一个额外的容器来存储原始顺序。)

#include<iostream>
#include<numeric>
#include<vector>
#include<random>
using namespace std;
int main() {
	//在全为1的数组中随机三个位置为0
	vector<int> array(64, 1);
	random_device rd; 
    mt19937 gen(rd());

	vector<int> indices(64);

	cout << "array数组:" << endl;
	for (int i = 0; i < 64; ++i) {
		cout << array[i] << ' ';
		if (!((i + 1) % 8)) cout << endl;
	}cout << endl;

	iota(indices.begin(), indices.end(), 0);//从0开始递增,0、1、2...63

	cout << "indices数组:" << endl;
	for (int i = 0; i < 64; ++i) {
		cout << indices[i] << ' ';
		if (!((i + 1) % 8)) cout << endl;
	}cout << endl;

	
	shuffle(indices.begin(), indices.end(), gen);//gen作为随机数生成器

	cout << "indices数组:" << endl;
	for (int i = 0; i < 64; ++i) {
		cout << indices[i] << ' ';
		if (!((i + 1) % 8)) cout << endl;
	}cout << endl;

	//取出indices的前三个随机位置的数作为array的随机位置设置为0
	for (int i = 0; i < 3; ++i) {
		array[indices[i]] = 0;
	}

	cout << "array数组:" << endl;
	for (int i = 0; i < 64;++i) {
		cout << array[i] << ' ';
		if (!((i+1) % 8)) cout << endl;
	}
}

标签:全为,std,顺序,随机数,元素,shufle,随机,数组,include
From: https://blog.csdn.net/Wheattail/article/details/139840251

相关文章

  • 【网络调优】Linux网络端口随机分配问题
    1.Linux端口基础1.端口号0不使用2.端口号1-1023,系统默认只给root使用3.端口号1024-4999由客户端程序自由分配4.端口号5000-65535由服务器程序自由分配2.Linux默认随机端口范围一般Linux的默认随机端口范围是:32768-60999(可以通过查看配置文件的方式来获取)当客户端port......
  • 【LeetCode】215.数组中的第K个最大元素
    题目描述给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:[3,2,1,5,6,4],k=2输出:5示例2:输入:[3,2......
  • 函数内部返回指向字符串的指针和数组名的区别
    目录两道题目进程的内存分布结论两道题目先来看两道与内存管理有关的题目以下程序会出错吗?如果不会则输出什么?#include<stdio.h>char*func(){ char*str="HelloWorld"; returnstr;}intmain(){ char*str=func(); //程序输出HelloWorld printf("%s\n",......
  • java insert数组到postgres数据库
    数组格式在数据库中并不是常用操作,比较常用的是字符串存储后,使用时再进行数据加工.这里记录下直接操作postgresinsert数组的数据操作.表结构CREATETABLEschema.table( report_rowsjsonNULL, series_varcharNULL)实际存在两种数组结构:1字符串数组2json数组.js......
  • NumPy数组操作
    NumPy数组操作1.修改形状arr.reshape(m,n)#将数组修改成m*n的新数组#一维数组importnumpyasnparr=np.arange(10)arr1=arr.reshape(2,5)print("arr:")print(arr)print("arr1:")print(arr1)#二维数组importnumpyasnparr=np.array([[1,2,3,4]......
  • DEMO_02:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序
    /***考核点:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序*<p>*题目:*1.使用while循环获取20个五位数随机数并打印;*2.遍历20个数,筛选出随机数中3的倍数,并统计个数;*3.符合2的数中,找出五位数中3的倍数和位置*4.符合2的数中,把这五位数......
  • 数组合并去重排序
     constarr1=[54,67,89,1,4,3,5,0,0,3]    constarr2=[5,5,6,7,8,3,2,5,7,453,54]    functionpopSort(arr){      for(leti=0;i<arr.length;i++){        for(letj=0;j<arr.leng......
  • 随机矩阵
    简介随机矩阵理论(RandomMatrixTheory,RMT)利用统计力学的原理来模拟多个数学领域中复杂系统的交互作用。应用领域电子云密度,密度泛函混沌理论黎曼猜想神经科学最优控制数论谐振子:弹簧振子,小幅钟摆,随机矩阵:元素来自于概率分布采样的对称或共轭对称矩阵实随机矩阵,对称......
  • Vue 中 v-for 的全方位解读:含案例与 key 属性运用及常用数组方法
    目录v-for介绍v-forkey属性的使用Vue数组方法v-for介绍        v-for能够对数字、数组以及对象进行遍历。值得注意的是,当v-for与v-if一同运用时,v-for的优先级要高于v-if。正因如此,应尽量避免将v-if和v-for共同使用。特别是在嵌套使用的情况下,每一......
  • java小记-随机数、数组
    练习4:①随机数:类似scanner键盘录入的三步:答:(只能猜一次)如果继续猜呢:添加循环:注意:添加新的功能:保底,抽的次数到某个时刻,直接猜中,不管结果几何。②数组:......