Generating random number in Ethereum smart contracts is very difficult because the execution result of smart contracts should be deterministic on multiple nodes, running multiple times. Despite the difficulties, many smart contracts such as game, lottery, and gambling have implemented their own Pseudo-Random Number Generator (PRNG).However, most of them are vulnerable, so attackers can easily exploit it even if they are not miners. Even though many researchers have suggested tools to verify smart contracts, they cannot detect the vulnerable PRNG.sThis talk will classify types of the vulnerable PRNGs and show the real-world examples.Also, it will explain how to exploit them with the detailed analysis. There are 4 major types of the vulnerable PRNG to be introduced in this presentation.1. PRNG based on the blockhash of the old block and a private variable- Example contract: Ethereum pogs game- Goal: Become a winner and get all pogs of the other player2. PRNG based on the blockhash of the current block and a private variable- Example contract: Ethereum RPG game- Goal: Get legendary champs3. PRNG based on the blockhash of the last block and a private variable- Example contract: Ethereum RPG game- Goal: Get legendary champs and items 4. PRNG based on the block variables and a private variable - Example contract: Ethereum gambling game- Goal: Become a winner and get prizes To explain how to exploit the above PRNG, some knowledge about Ethereum and Solidity will be described, such as the characteristics of blockhash() function in Solidity, the private variables in the smart contracts and internal transactions between two contracts.Finally, this talk will introduce how to generate random numbers in smart contract safely.