Background
又是那个吃面条的晚上,我和wjh还有邢神因为方便面的口味分配问题产生了一个绝妙的解决方案,随机数。
#include<iostream> #include<cstdio> #include<ctime> #include<algorithm> using namespace std; int main() { int random; int exist[4]={0}; srand(time(NULL)); for(int i=1;i;) { random=rand()%3+1; if(exist[random])continue; exist[random]=1; printf("%d\n",random); system("pause"); } return 0; }
Solution
随机数生成技巧
对于生成指定范围的随机数,我们可以通过mod来处理。
Sample
r=rand()%5+1;//生成1-5之间的随机数
为什么膜5再加一呢?如果mod6的话,确实可以出现1-5,但也会出现0,而mod5的结果是0-4,保证出现1-5,视实际情况可以选择不同的处理方式。
对拍脚本
将暴力,正解和随机数生成器放在同一目录下,新建一个.bat
@echo off :loop random.exe seq.exe std.exe fc seq.out ans.out if %errorlevel%==0 goto loop pause :end
- 需要注意的是,要保证random的输出文件是后面两个程序的输入文件.
当输出不同时,bat就会停止.
Feb.07,2018 Wed