A computing device comprising: a processor; and a computer readable media having stored thereon instructions for a virtual machine managed by a virtual machine manager that, when executed by the processor cause the processor to: access an entropy pool of the virtual machine, the entropy pool having been generated based at least in part on each of one or more hardware components of the computing device while the virtual machine is running; use the entropy pool as a basis for generating a random number; obtain a first sequence counter value for the virtual machine; store the random number and the first sequence counter value for the virtual machine; in response to cloning of the virtual machine, increment the sequence counter of the cloned virtual machine; receive a request to use the random number; obtain the stored first sequence counter value; obtain a second sequence counter value for the virtual machine when the request is received; compare the second sequence counter value to the first sequence counter value; if the first sequence counter value and the second sequence counter value are the same, then use the random number; if the first sequence counter value and the second sequence counter value are not the same, then: regenerate the entropy pool of the virtual machine, generate a new random number based on the regenerated entropy pool, and use the new random number. a processor; and a computer readable media having stored thereon instructions for a virtual machine managed by a virtual machine manager that, when executed by the processor cause the processor to: access an entropy pool of the virtual machine, the entropy pool having been generated based at least in part on each of one or more hardware components of the computing device while the virtual machine is running; use the entropy pool as a basis for generating a random number; obtain a first sequence counter value for the virtual machine; store the random number and the first sequence counter value for the virtual machine; in response to cloning of the virtual machine, increment the sequence counter of the cloned virtual machine; receive a request to use the random number; obtain the stored first sequence counter value; obtain a second sequence counter value for the virtual machine when the request is received; compare the second sequence counter value to the first sequence counter value; if the first sequence counter value and the second sequence counter value are the same, then use the random number; if the first sequence counter value and the second sequence counter value are not the same, then: regenerate the entropy pool of the virtual machine, generate a new random number based on the regenerated entropy pool, and use the new random number. access an entropy pool of the virtual machine, the entropy pool having been generated based at least in part on each of one or more hardware components of the computing device while the virtual machine is running; use the entropy pool as a basis for generating a random number; obtain a first sequence counter value for the virtual machine; store the random number and the first sequence counter value for the virtual machine; in response to cloning of the virtual machine, increment the sequence counter of the cloned virtual machine; receive a request to use the random number; obtain the stored first sequence counter value; obtain a second sequence counter value for the virtual machine when the request is received; compare the second sequence counter value to the first sequence counter value; if the first sequence counter value and the second sequence counter value are the same, then use the random number; if the first sequence counter value and the second sequence counter value are not the same, then: regenerate the entropy pool of the virtual machine, generate a new random number based on the regenerated entropy pool, and use the new random number. regenerate the entropy pool of the virtual machine, generate a new random number based on the regenerated entropy pool, and use the new random number.