c/c++开发分享如何使用C/C++预处理器生成一系列随机数

您所在的位置:网站首页 c语言如何将数字变为字符 c/c++开发分享如何使用C/C++预处理器生成一系列随机数

c/c++开发分享如何使用C/C++预处理器生成一系列随机数

#c/c++开发分享如何使用C/C++预处理器生成一系列随机数| 来源: 网络整理| 查看: 265

王炸科技 2022-05-11 c/c++开发分享如何使用C/C++预处理器生成一系列随机数 来源:        

  我想用C预处理器生成一系列随机数,并将它们存储在变量中供我的程序使用。

  目的:

  我想在每次构建程序时生成一组“唯一”的随机数。存储随机数的一小部分变量将被有意义的(即非随机的)数字覆盖。我希望黑客不可能通过调试程序或比较多个构建来区分有意义的数字和随机数。我希望构建过程自动化并且自包含。我希望实现可以跨VisualStudio和GCC移植。

  澄清:

  到此为止:

  这是一个纯粹的编程/实现问题,所以请不要对预处理器的邪恶或黑客打击的无用性进行改编。

  所以,这是接近要求的解决方案:

  //pprand.h#include#ifndefPP_RAND_SEED#definePP_RAND_SEED(((PP_RAND_MIN+PP_RAND_MAX)0x1f7)^0x1e3f75a9)#endif#defineBOOST_PP_VALUE((PP_RAND_SEED214013+2531011)%65536)#includeBOOST_PP_ASSIGN_SLOT(1)#undefBOOST_PP_VALUE#undefPP_RAND_SEED#definePP_RAND_SEEDBOOST_PP_SLOT(1)#defineBOOST_PP_VALUE(PP_RAND_MIN+PP_RAND_SEED%(PP_RAND_MAX-PP_RAND_MIN))#includeBOOST_PP_ASSIGN_SLOT(2)#undefBOOST_PP_VALUE#ifdefPP_RAND#undefPP_RAND#endif#definePP_RANDBOOST_PP_SLOT(2)

  你可以像这样使用它:

  //Pseudorandomnumberrange.#definePP_RAND_MIN0#definePP_RAND_MAX100//Pseudorandomnumberseed.#definePP_RAND_SEED123#include"pprand.h"//Gotit!#pragmamessage("PP_RANDvalue:"_CRT_STRINGIZE(PP_RAND))

  要了解有关此方法的更多信息,请访问我的博客:http://alexander-stoyan.blogspot.com/2012/07/getting-pseudo-random-numbers-at.html

  您必须将Randomgenerator序列替换为实际生成可接受的半随机值的内容,但该部分应该很容易。

  您必须在编译时使用-DSEED=...定义随机种子。不知道如何使用__TIME__和__DATE__来做到这一点,因为它们是字符串。

  #includetemplatestructRandom{enum{value=7Random::value+17};};templatestructRandom{enum{value=SEED};};templatestructRandomIn{enum{value=BEG+Random::value%(END-BEG)};};intmain(){printf("%d%d",RandomIn::value,RandomIn::value);return0;}

  以上就是c/c++开发分享如何使用C/C++预处理器生成一系列随机数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(全力博客)。

上一篇:c/c++开发分享free()如何运作?

下一篇:c/c++开发分享哪种Web开发语言最适合C程序员?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3