[高级程序设计] 对拍and随机数

随机数


example:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    srand((int)time(0));  // 产生随机种子  把0换成NULL也行
    for (int i = 0; i < 10; i++)
    {
        cout << rand()%100<< " ";
    }
    return 0;
}

没啥重点,主要是头文件和rand()的用法:

srand()
srand()可用来设置rand()产生随机数时的随机数种子。通过设置不同的种子,我们可以获取不同的随机数序列。

可以利用srand((int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。不过要调用time(),需要加入头文件< ctime >。

其他的随机数的范围通式

产生一定范围随机数的通用表示公式是:

要取得[0,n) 就是rand()%n 表示 从0到n-1的数

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;

要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;

要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。

要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。

要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。


windows下的对拍脚本

  @echo off
:loop
r.exe
1.exe
2.exe
fc 1.out 2.out
if not errorlevel 1 goto loop
pause
:end
  

Linux 下的对拍脚本

#!/bin/bash
while true;do
./r
./1
./2
if diff ans1.out ans2.out;then printf "无明显差异\n"
else printf "WA\n"
break
fi
done
posted @ 2021-08-12 16:19  ¶凉笙  阅读(37)  评论(0编辑  收藏  举报