相关疑难解决方法(0)

如何在C++中创建随机字母数字字符串?

我想创建一个随机字符串,由字母数字字符组成.我希望能够指定字符串的长度.

我如何在C++中执行此操作?

c++ string random

164
推荐指数
9
解决办法
18万
查看次数

srand() - 为什么只调用一次?

这个问题是关于这个问题的评论 推荐的方法来初始化srand?第一条评论说srand()应该只在应用程序中调用ONCE.为什么会这样?

c random srand

71
推荐指数
4
解决办法
7万
查看次数

建议初始化srand的方法?

我需要一种'好'的方法来初始化C++中的伪随机数生成器.我发现一篇文章指出:

为了生成类似随机数的数字,srand通常被初始化为一些独特的值,就像那些与执行时间相关的值.例如,函数时间返回的值(在标题ctime中声明)每秒都不同,这对于大多数随机需求来说足够独特.

Unixtime对我的应用来说并不是很有特色.有什么更好的方法来初始化它?奖励点是否可移植,但代码主要在Linux主机上运行.

我正在考虑做一些pid/unixtime数学来得到一个int,或者可能从中读取数据/dev/urandom.

谢谢!

编辑

是的,我实际上是每秒多次启动我的应用程序而且我遇到了碰撞.

c++ random srand

64
推荐指数
8
解决办法
9万
查看次数

为什么每次编译和运行时都会使用rand()获得相同的结果?

每当我运行此代码时,我都会得到相同的结果.

程序

#include<stdlib.h>

int main(int agrc, const char *argv[]) {
 int i = rand();
 printf("%d\n",i);
 for(i=0;i<10;i++) {
  printf("%d\n",rand());
 }
}
Run Code Online (Sandbox Code Playgroud)

结果:

41
18467
6334
26500
19169
15724
11478
29358
26962
24464
5705
Run Code Online (Sandbox Code Playgroud)

我跑了这个mingw.其实我在学习Objective-C

请帮我.

c random

7
推荐指数
2
解决办法
2万
查看次数

GCC表现

我正在使用Beowulf集群上的MPI进行并行编程.我们为模拟退火编写了并行算法.它工作正常.我们希望执行速度比串行代码快15倍.但是我们在不同的体系结构和操作系统上执行了一些串行C代码,因此我们可以使用不同的数据集来进行性能测量.我们在代码中使用了这个Random函数.我们在windows和ubuntu linux上都使用GCC.我们发现linux上的执行需要更长的时间,而且我们不知道为什么.有人可以使用gcc在linux和windows上编译此代码并尝试解释我.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main (int argc, char** argv){
        double Random();

        int k,NUM_ITERATIONS = 10;
        clock_t start_time = clock();
        NUM_ITERATIONS=atoi(argv[1]);

        // iniciranje random generatora 
        srand(time(NULL));

        for(k=0; k<NUM_ITERATIONS; k++){
                double raa = Random();
        }
        clock_t end_time = clock();
    printf("Time of algorithm execution: %lf seconds\n",  ((double) (end_time - start_time)) / CLOCKS_PER_SEC);

    return 0;
    }

    // generate random number bettwen 0 and 1
    double Random(){
        srand(rand());
        double a = rand();
        return a/RAND_MAX; 
    }
Run Code Online (Sandbox Code Playgroud)

如果我用100,000 000执行它作为NUM_ITERATIONS的参数,我在linux上的执行速度比在Windows上慢20倍.在具有相同架构的机器上进行测试,双启动win + ubuntu linux.我们需要帮助,因为这个随机函数是我们想要用我们的数据显示的瓶颈.

c compiler-construction gcc simulated-annealing mpi

5
推荐指数
2
解决办法
1294
查看次数

#if vs #ifndef vs #ifdef

我的问题首先是理解#ifndef#ifdef.我也想明白之间的差别#if,#ifndef#ifdef.我明白这#if基本上是一个if语句.例如:

#include<iostream>
#define LINUX_GRAPHICS 011x101

int main(){
 long Compare = LINUX_GRAPHICS;
 #if Compare == LINUX_GRAPHICS
   std::cout << "True" << std::endl;
 #endif
}
Run Code Online (Sandbox Code Playgroud)

但其他人,虽然我读到了他们,但我无法理解.它们看似非常相似,但我怀疑它们的工作方式类似.非常感谢帮助.

c c++ preprocessor-directive

5
推荐指数
2
解决办法
6077
查看次数

C中的rand()问题

可能重复:
为什么我总是使用rand()得到相同的随机数序列?

到目前为止这是我的文件:

#include <stdio.h>

int main(void) {
    int y;
    y = generateRandomNumber();
    printf("\nThe number is: %d\n", y);
    return 0;
}

int generateRandomNumber(void) {
    int x;
    x = rand();
    return x;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是rand()总是返回41.我在win上使用gcc ...不知道该怎么做.

编辑:使用时间生成随机数将无法正常工作.它为我提供了一个数字(12000),每次我调用它只是稍微高一点(大约每秒+3).这不是我需要的随机性.我该怎么办?

c random gcc

4
推荐指数
2
解决办法
2万
查看次数

每次在C++中生成相同的随机数

这是我的代码:

int main(int argc, char** argv) {

    int sleeptime = atoi(argv[1]);    
    int sleepCount = atoi(argv[2]);

    int sleepTimeRandom = 1 + (rand() % (int)(sleeptime));
    int sleepCountRandom = 1 + (rand() % (int)(sleepCount));

    sleepTimeRandom = sleepTimeRandom * 1000;

    DWORD id = GetCurrentProcessId();

    cout << "\n\nProcess with id " << id << " will sleep for " << sleepTimeRandom << " milliseconds\n";
    cout << "\n\nProcess with id " << id << " will sleep " << sleepCountRandom << " times \n";
Run Code Online (Sandbox Code Playgroud)

当我打电话给exe时

sleeper …
Run Code Online (Sandbox Code Playgroud)

c++ random

4
推荐指数
2
解决办法
6094
查看次数

关于简单随机数生成问题的建议.

我有一个简单的整数向量,只有4个值.我想循环遍历向量,为每个值分配0或1.我希望它随机到每次都不同的程度.

我认为以下就足够了:

  for (int i = 0; i < (int)numberVect.size(); i++)
  {
      numberVect[i] = rand() % 2;
  }
Run Code Online (Sandbox Code Playgroud)

但是,我发现每次关闭并重新打开程序时,都会分配完全相同的值.

所以第一次通过它将是1,0,0,0,然后如果我再次运行循环而不关闭程序它将是0,1,0,1.这看起来很完美.

但是,关闭程序并重新启动后,我会发现第一个序列将再次为1,0,0,0,第二个序列将再次为0,1,0,1.


另外,我有关于这个问题的第二个问题:

你能建议一种方法来确保向量中的至少一个值是1吗?同时仍然允许随机生成无缝地工作?

非常感谢,我希望你们可以提供帮助:D

c++ random

1
推荐指数
1
解决办法
641
查看次数

C rand()并不是随机的

我正在开发一个应用程序.我正在使用:

int rand_num = rand() % 100;
Run Code Online (Sandbox Code Playgroud)

获得一个介于0到99之间的随机整数.现在,假设我得到41,然后重新启动我的应用程序,它始终是41.相同的序列一遍又一遍,意味着它不是真正随机的.

有解决方案吗

c c++ random

1
推荐指数
1
解决办法
9546
查看次数