我在我的代码中发布了一个问题,其唯一的#include指令如下:
#include <bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)
我的老师告诉我这样做,但在评论部分,我被告知我不应该这样做.
为什么?
c++ portability c++-faq turbo-c++ implementation-defined-behavior
正如标题所示,我试图找出一种使用新的C++ 11 <random>库生成随机数的方法.我用这段代码尝试过:
std::default_random_engine generator;
std::uniform_real_distribution<double> uniform_distance(1, 10.001);
Run Code Online (Sandbox Code Playgroud)
我的代码的问题是,每次编译和运行它时,它总是生成相同的数字.所以我的问题是随机库中的其他函数可以在真正随机的情况下实现这一点吗?
对于我的特定用例,我试图获得该范围内的值 [1, 10]
这是我第一次用C语言尝试随机数(我想念C#).这是我的代码:
int i, j = 0;
for(i = 0; i <= 10; i++) {
j = rand();
printf("j = %d\n", j);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,每次运行代码时都会得到相同的序列.但是如果我srand(/*somevalue/*)在for循环之前添加,它会生成不同的随机序列.有谁能解释为什么?
std::filesystem在C++ 17上,std::experimental::filesystem对于许多前C++ 17编译器来说,基于boost::filesystem并且几乎所有它都很明显地移植到较新的std.
但我认为不std::filesystem相同boost::filesystem::unique_path().
我没有注意到std中的等价物吗?或者我是否应该采用一种推荐的方法来模仿实现?
boost::filesystem当我的代码注意到它在支持的平台上进行编译时,我真的希望能够替换依赖std::filesystem,并且unique_path()是我转换中唯一不明显的部分.
有一次,我的老师教我使用randomize()和random()函数在C++ Builder中生成伪随机数.现在我更喜欢在VS 2012中工作,但当我尝试使用这些功能时,它会说"找不到标识符",即使我添加了#include <stdlib.h>.谷歌搜索后的一段时间,我发现,也有rand()和srand()功能.它们之间有什么区别,哪个更好用?
我想创建一个简单的短期预订系统,我想生成确认号码
我只希望有〜500所保留,所以我不想像 collissions高的情形产生.
我有一个想法是根据日期时间戳和用户名生成一个sha1哈希,然后将其截断为前10个字符.这样的东西是否足够可靠,足以处理~500个预订?
我正在创建一个应用程序,我需要生成多个随机字符串,几乎就像一个唯一的ID,它由一定长度的ASCII字符组成,混合了大写/小写/数字字符.
是否有任何Qt库来实现这一目标?如果没有,在纯c ++中生成多个随机字符串的首选方法是什么?
我的函数 mutateSequence 接受三个参数。参数p是0和1之间的值,包括0和1。我需要两个 if 语句,一个以 4p/5 的概率输入,另一个以 p/5 的概率输入。我该如何编写逻辑来实现这一点?
代码:
void mutateSequence(vector<pair<string, string>> v, int k, double p)
{
for (int i = 0; i < k - 1; i++)
{
string subjectSequence = v[i].second;
for (int j = 0; j < subjectSequence.length(); j++)
{
// with probability 4p/5 replace the nucelotide randomly
if (//enter with probability of 4p/5)
{
//do something
}
if (//enter with probability of p/5)
{
//do something
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我期望第一个 if 语句以 4p/5 …
我对此的看法是
#include <iostream>
int main()
{
for( int i = 0; i < 20; ++i) {
std::cout << (char) ((random() % (int('Z') + 1)) + int('A')) << '\n';
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎非常直接。您生成一个数字,它介于所有小于或等于Z和大于或等于 之间A。如果你玩它,你会发现还生成了其他字符。这是为什么?
我需要使用 C++11 生成随机字符串的帮助。
我不知道如何继续,如果你能帮助我。
#include <random>
char * random_string()
{
static const char alphabet[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
static const MAX_LEN = 32; //MAX LENGTH OF THE NEW CHAR RETURNED
int stringLength = sizeof(alphabet)/sizeof(alphabet[0]);
for (int i = 0; i<=MAX_LEN;i++)
{
//now i don't know what i need to do help!
}
static const char test[MAX_LEN];
return test;
}
Run Code Online (Sandbox Code Playgroud) 我的代码提取是
if (num == 0) {
cout << 1;
cout << 2;
}
else if (num == 1) {
cout << 0;
cout << 2;
}
else if (num == 2) {
cout << 0;
cout << 1;
}
Run Code Online (Sandbox Code Playgroud)
其中0 <= num <= 2.
我在问,因为这些cout << ...陈述将被转换成更大的东西,但(几乎)彼此相同.
*我的意思是优化为'美化'代码(例如删除5个重复的cout语句).
我没有在问题中加入"美化",因为它在SO问题中听起来很奇怪.
c++ ×9
random ×5
c ×2
c++11 ×2
boost ×1
c++-faq ×1
c++17 ×1
char ×1
implementation-defined-behavior ×1
int ×1
optimization ×1
portability ×1
probability ×1
qt ×1
range ×1
turbo-c++ ×1
unique ×1