The GNU C++ library's random_shuffle doesn't always use rand();

it sometimes uses a nonportable generator, which isn't being seeded.
Sidestep and always use our own PRNG.

Cleanup.
This commit is contained in:
Glenn Maynard
2003-10-06 00:09:10 +00:00
parent b3203b80b2
commit 5410988eb5
+9 -6
View File
@@ -467,15 +467,17 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
{ {
arraySongs.clear(); arraySongs.clear();
vector<Song*> arrayAllSongs = SONGMAN->GetBestSongs(); const vector<Song*> arrayAllSongs = SONGMAN->GetBestSongs();
for ( i=0; arraySongs.size() < 30 && i < arrayAllSongs.size(); i++ )
{
// weed out songs that require more songs than are available // weed out songs that require more songs than are available
for (i=0; i<arrayAllSongs.size(); i++) if ( SONGMAN->GetNumStagesForSong(arrayAllSongs[i]) > GAMESTATE->GetNumStagesLeft() )
if ( SONGMAN->GetNumStagesForSong(arrayAllSongs[i]) <= GAMESTATE->GetNumStagesLeft() ) continue;
arraySongs.push_back(arrayAllSongs[i]); arraySongs.push_back(arrayAllSongs[i]);
}
if( arraySongs.size() > 30 )
arraySongs.erase(arraySongs.begin()+30, arraySongs.end());
bUseSections = false; bUseSections = false;
break; break;
} }
@@ -1232,7 +1234,8 @@ void MusicWheel::StartRoulette()
void MusicWheel::StartRandom() void MusicWheel::StartRandom()
{ {
/* Shuffle the roulette wheel. */ /* Shuffle the roulette wheel. */
random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end() ); RandomGen rnd;
random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end(), rnd );
SetOpenGroup("", SongSortOrder(SORT_ROULETTE)); SetOpenGroup("", SongSortOrder(SORT_ROULETTE));