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