【发布时间】:2021-12-16 01:02:32
【问题描述】:
我在弄清楚如何从 array<string> 中选择随机索引时遇到问题。
这是一款纸牌游戏。我不想洗牌,而是想使用 srand 函数,在函数内部看似选择一个随机数。但我尝试的每件事都失败了。
这是数组的一部分:
array
cards = { "Ess \3", "Ess \4", "Ess \5", "Ess \6","2 \3","2 \4" };
\3 \4 \5 \6 是牌的符号,例如红心、钻石、黑桃。
无论如何.. 我只想从 52 中挑选一个看似随机的索引。 当我认为我已经接近时,我会遇到这样的事情: “C++ 不存在合适的构造函数来从 int 转换为 basic_string”之类的。
我不明白。我已经尝试了很长时间。请帮帮我。
我最近的尝试...
string randindex = rand() % 52;
cout << cards[randindex];
这当然不适合我。在创建函数之前,我首先必须学习如何选择随机索引...
【问题讨论】:
-
请显示您尝试做的事情。
-
我会推荐
std::uniform_int_distribution而不是srand -
rand() % 52返回一个整数,因此不能存储在字符串中。存储为整数,然后将整数用作数组的索引。此外,应该优先使用现代随机引擎而不是 rand。 -
请注意,函数
rand()仅保留在 C++ 库中,以与古老的源文件兼容。对于现代 C++ 随机数生成,请使用<random>头文件。有关完整详细信息,请参阅official N3551 paper -
@gunnar20008 作为这个问题的原始海报(OP),如果您发现 ABacker 提供的答案有用,您应该支持和/或接受它。谢谢 !这是流程反馈部分的一部分。详情请见https://stackoverflow.com/help/how-to-ask。