使用所有PC资源进行密集计算

时间:2013-12-01 22:44:21

标签: c

我在C中编写一个会生成随机数的小脚本。 当我运行它60秒时,它只生成了1700万个数字,在我的PC任务管理器中,我发现它几乎占用了0%的资源。

有人可以,给我一段代码或链接,让我可以使用我的电脑的全部资源在几秒钟内生成数万亿随机数?也许是多线程的?

注意:如果您知道使用Nvidia GPU而不是CPU的简单方法(没有繁重的CUDA SDK),它也会很好!

修改

这是我的代码:

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

    char getRandLetter(void);

int main()
{
    int i,num=0,p=0;
    char randhash[12];

    time_t start,stop;
    start = time(NULL);
   while(1) {
        for(i=0; i<12; i++){
        randhash[i]=getRandLetter();
        }
        num++;
        stop = time(NULL);
        double diff = difftime(stop, start);
        if (diff >= 60) {
            printf("60 seconds passed... NUM=%d", num);
            start = time(NULL);
            break;
        }
    }
    return 0;
}

char getRandLetter() {
        static int range = 'Z'-'A'+1;
        return rand()%range + 'A';
}

注意:我拥有一台拥有i7和杀手级别的杀手级电脑:p所以我只需要利用这些资源。

1 个答案:

答案 0 :(得分:1)

生成随机数不应受CPU限制。生成随机数的函数通常会调用系统内核,后者从物理熵源(网络,键盘,鼠标等)中获取随机数。你可以用计算做的最好的是伪随机数。

实际上,应该有一些方法可以使用更多的CPU来更快地生成“随机”数字,但这些随机数不会像从物理熵源中获取的数量那么高(并且使用这些来源不会如果有的话,可以灵活地调整CPU)因为CPU往往具有相当的确定性(因为它们应该是这样)。

其他一些信息: http://en.wikipedia.org/wiki/Random_number_generation

相关问题