出于某种原因,我要在下面发布的代码不是纯粹随机的...我使用了<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开始
你可以看到播放器和电脑以相同的号码开始..而且这种情况总是因某种原因而发生......我似乎无法发现问题,请帮忙。
答案 0 :(得分:3)
time(NULL)
以秒为单位返回时间,并且因为每次生成新数字时都设置了新种子,所以您可能(在大多数情况下)每次都设置与种子相同的数字。
移动:
srand(NULL)
开始主要或某个地方只会被调用一次。
答案 1 :(得分:0)
听起来,代码中的time(NULL)
会返回一些不变的内容,并且不会像您期望的那样调用std::time(NULL)
。如果是,您将从rand()
正确生成一个随机数。
尝试打印time(NULL)
的输出,并检查您是否确实获得了自纪元以来弹跳的秒数。如果没有,请确保包含<ctime>
并致电完全合格的srand(std::time(NULL))
。