The reason why it’s called a seed is because the sequence of random numbers is determined entirely by an initial data point (the seed). It is like an analogy for the growth of a plant. A seed is a tiny object that determines the outcome of what the plant is. A different seed will create a different plant. Random number generation, and indeed all forms of procedural content generation, work this way.
I only just now registered, so I haven’t looked at cascade and cannot address that part of your question.
The random number generator from cstdlib uses a global variable in order to store the initial seed. This implies that any collection of code which uses the library will share that same global seed value.
Without looking at the code, the behavior here is strongly indicative that the editor at some point initializes the seed during its execution. However, the compiled game in contrast might never have modified the seed global variable in contrast, and thus will behave differently.
Relying on cstdlib’s random number generation is bad practice and should generally be avoided. Other C++ libraries can easily interfere with the global seed at any arbitrary and unexpected time, making it unsafe to assume the sequence is reliable. Furthermore, it does not allow you to create multiple separate generators with different seeds, which occasionally can be useful if you want to intentionally store specific generators associated with specific seeds, so that you can compare the results of the different generators (which will always be the same when the seeds are the same), for example.
The cstdlib rand is fine for simple testing purposes, but if you want to use random numbers in any serious way in your game then you should utilize a 3rd party higher quality random generator (many free ones are available) such as the Mersenne Twister or various other algorithms. There’s often a trade off between random number quality and performance, so take some time to figure out what is optimal for your system’s constraints.