作者:黄晓敏3023 | 2023-09-10 12:24
给定一组整数:
std::set itemInTest;
在这个集合中有大约4000个整数,我想循环100次,每次它可以从集合中随机选择100个不同的元素.此外,所有整数都是正数.
如何随机挑选其中一个?我知道stackoverflow中有很多答案,但有些太复杂了,有些并不是那么随意.
1> John Zwinck..:
首先,将您的项目放入向量中,因为您需要多次随机访问它们:
vector items(itemInTest.begin(), itemInTest.end());
然后,如果你需要100个项目并且不想两次选择相同的项目,你可能只是将整个事情洗牌:
std::random_device rd;
std::mt19937 gr(rd());
shuffle(items.begin(), items.end(), gr);
现在只需要前100个元素.如果你想再次使用它们:
set result(items.begin(), items.begin() + 100);
或者您可以使用任何您喜欢的输出容器类型 - 包括矢量.
您可以random_shuffle
再次执行该步骤,直到完成100次整体迭代.
如果你没有C++ 11,你可以使用std::random_shuffle()
而不是std::shuffle()
,注意随机性的质量可能会降低.然后你不需要std::mt19937
,只需:
random_shuffle(items.begin(), items.end());
令人遗憾的是,C++标准库没有部分洗牌.改变整个范围以选择m
推荐阅读
-
如何解决《ContainerProvider的独立JavaWebsocket客户端NoClassDefFoundError》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《榆树-结合和分类多种类型》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《无法`pipinstall-rrequirements.txt`》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何在lex中创建没有特定字母组的正则表达式》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《是否可以使用大括号{}来细分Java代码?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《为什么Scala编译器失败,"包中的对象SparkConf无法在org.apache.spark包中访问"?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《无法手动关闭matplotlib绘图窗口》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《RxJS比较最后并发出》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《ios-动态编辑3d触摸快捷方式列表》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《BrowserLinkMVC6-不工作-没有注入额外代码》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《Golang程序挂起而没有完成执行》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在概念定义中,是否允许在需求表达式之外的替换失败?》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《通过ParseForm()检索表单选项id》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Symfony2无法加载类型EntityType》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《printfbash-在标记包围的现有行的中间打印文本》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如果450KBbase64编码,数据的文件大小是多少?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Rspecallow_any_instance_of返回实例ID》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何使用数组在div上按顺序获取颜色》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在Windows10主页中设置Composer路径变量》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《使用FileReader(WebAPI)在浏览器中读取大文件》经验,为你挑选了1个好方法。 ...
[详细]