No, you are right, something very odd is going on here. And it doesn’t work the way @emmanuel said it does (or it doesn’t seem to).
So the way I thought you could work it is that the page load would “preload” a random number, and then the creation of the thing would use that and then it would assign the next random number. And the next save would use that. In fact that works fine, it uses the number of load and does update the number.
But that doesn’t work on the next on, the page won’t redo the blockspring call until it is refreshed. Even if you put it in a different state.
The only way I can find to do it is via saving the data on the user, and then pulling it back. That way you force the refresh I think.