Random number: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
m (clean up, added orphan, underlinked tags)
 
Line 1: Line 1:
{{stub}}
{{Multiple issues|
{{Underlinked|date=January 2024}}
{{Orphan|date=January 2024}}
}}
 
There is no built-in [[entity]] to generate random numbers in Valve's {{Source|4}} games.
There is no built-in [[entity]] to generate random numbers in Valve's {{Source|4}} games.


Line 19: Line 23:
     virtual int RandomInt( int iMinVal, int iMaxVal ) = 0;
     virtual int RandomInt( int iMinVal, int iMaxVal ) = 0;
     virtual float RandomFloatExp( float flMinVal = 0.0f, float flMaxVal = 1.0f, float flExponent = 1.0f ) = 0;
     virtual float RandomFloatExp( float flMinVal = 0.0f, float flMaxVal = 1.0f, float flExponent = 1.0f ) = 0;
     };  
     };


This is a random generator included in the source SDK, which allows you to generate random numbers, for instance to choose a random spawn point within an area:
This is a random generator included in the source SDK, which allows you to generate random numbers, for instance to choose a random spawn point within an area:
Line 32: Line 36:


[[Category:Source]]
[[Category:Source]]
[[Category:C++]]


[[Category:C++]]
{{stub}}

Latest revision as of 22:52, 21 January 2024

Wikipedia - Letter.png
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
Underlinked - Logo.png
This article needs more Wikipedia icon links to other articles to help Wikipedia icon integrate it into the encyclopedia. Please help improve this article by adding links Wikipedia icon that are relevant to the context within the existing text.
January 2024

There is no built-in entity to generate random numbers in Valve's Source Source games.

However, you can use logic_case's PickRandom input to trigger one of up to sixteen random outputs.

IUniformRandomStream

   //-----------------------------------------------------------------------------
   // A generator of uniformly distributed random numbers
   //-----------------------------------------------------------------------------
   class IUniformRandomStream
   {
   public:
   	// Sets the seed of the random number generator
   	virtual void	SetSeed( int iSeed ) = 0;
   
   	// Generates random numbers
   	virtual float	RandomFloat( float flMinVal = 0.0f, float flMaxVal = 1.0f ) = 0;
   	virtual int		RandomInt( int iMinVal, int iMaxVal ) = 0;
   	virtual float	RandomFloatExp( float flMinVal = 0.0f, float flMaxVal = 1.0f, float flExponent = 1.0f ) = 0;
   };

This is a random generator included in the source SDK, which allows you to generate random numbers, for instance to choose a random spawn point within an area:

   CEmpSpawn *picked = candidates[random->RandomInt(0, candidates.Count() - 1)];

random is a global set up in the initialization of the source SDK. Note the - 1; RandomInt(0,1) includes the upperbound, unlike its counterpart in the C++ stdlib and boost libraries. This upper bound behaviour can be readily tested by putting this anywhere you know will run:

   for (int i = 0; i < 50000; ++i) {
     Assert(random->RandomInt(0, 2) < 2);
   }


Stub

This article or section is a stub. You can help by expanding it.