不是真正的随机

时间:2016-05-17 21:10:34

标签: c++ random

出于某种原因,我要在下面发布的代码不是纯粹随机的...我使用了<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" android:title="Press" android:titleTextColor="#FFFFFF" /> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> ,试图让它随机..我不知道为什么它表现得很奇怪......

srand()

结果:

  

~~~~~~~~~~ BLACKJACK ~~~~~~~~~~~

     

你想玩单人游戏还是多人游戏? (输入0表示单个   玩家,1人多人游戏)

     

0

     

启动单人游戏.........

     

从两张牌开始......

     

你从2开始

     

计算机以2开始

你可以看到播放器和电脑以相同的号码开始..而且这种情况总是因某种原因而发生......我似乎无法发现问题,请帮忙。

2 个答案:

答案 0 :(得分:3)

time(NULL)以秒为单位返回时间,并且因为每次生成新数字时都设置了新种子,所以您可能(在大多数情况下)每次都设置与种子相同的数字。 移动:

srand(NULL)

开始主要或某个地方只会被调用一次。

答案 1 :(得分:0)

听起来,代码中的time(NULL)会返回一些不变的内容,并且不会像您期望的那样调用std::time(NULL)。如果是,您将从rand()正确生成一个随机数。

尝试打印time(NULL)的输出,并检查您是否确实获得了自纪元以来弹跳的秒数。如果没有,请确保包含<ctime>并致电完全合格的srand(std::time(NULL))