It isnt a bug, just a feature of the pseudo random generator.

Think of it like Generating a New World in a game, It will Generate the Map with a Seed, that is â€śRandomâ€ť, but if you insert the exact same seed to Generate the World with, it will always give you the same result every time you do it.

Like what @RickAstll3y said, they are just rounded down to be a whole number, so like if you have 100.929698646668, it would be just 100, and since tick()'s ones place changes every second, thats why it takes a second for it to actually change.

Random.new() and math.random() are functionally the same thing btw, the big Difference is that Random.new() can handle up to 64 bit signed numbers (2^63), and math.random() can only handle up to 32 bit signed numbers (2^31), Random.new() is slower with its generation, and you generally will not need to generate very large numbers, so math.random() is sometimes used to â€śfasterâ€ť calculations.

The Usage of Seeds to alter a pseudo random generator is not new, and did not appear with Random.new(), you can do this with math.randomseed() to alter math.random()'s pseudo random generation if you didnt know that