[エンティティの例]乱数フィッティング
2980 ワード
質問する
Guess the random number! 任志允
質問:参加者は1~10のランダムな数値を推定して選択できます.
2人以上の参加者が集まると、主人はランダムな数字を生成し、最も近い参加者が勝つ.
->hint:エンティティには、指定した文字列を暗号化した数値を返す内蔵関数が含まれています.
これがkeccak 256()であり、ランダムな数字を生成するために使用できます.
複雑すぎるから、uint(keccak 256(abi.encodePacked)と書きましょう.
->hint 2:keccakとして作成された数字は、鋳造後uint 256となります.
これは私たちが望んでいる範囲内(1から10以内の数字)の数字ではありません.
基本演算子(+-*/%など)を使用して作成します.(hint-hint:日数)
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 < 0.9.0;
contract guessRandomNumber{
uint public participants; // 현재 베팅한 사람 수
address private _owner; // 컨트렉트 주인
address[] addresses; // 참여한 사람들의 주소 저장
mapping (address => uint256) addressToGuesses; // 참여한 사람들의 주소와 베팅한 값 연결
event randomNumber(uint random); // 랜덤 숫자가 생성 되면 이벤트 발생
constructor() {
// 처음 디플로이 한 사람의 주소를 주인으로 설정
}
function betNumber(uint256 _bet) public {
// 베팅한 수는 1부터 10인 숫자만 가능
// 현재 함수를 호출한 주소를 저장하고, 베팅한 값을 매핑에 저장
// 참여자 수 증가시키기
}
function closest2Random(string memory _random) public onlyOwner returns(address) {
// 참여자가 한명보다 많아야 실행 가능
// 받은 문자열로 1-10의 랜덤 정수 생성, 이벤트 발생시키기
// 참여자 수를 다시 0으로 만들기
// 랜덤 정수로 제일 근접하게 맞춘 참여자를 찾고 리턴하기
}
modifier onlyOwner() {
// 주인만 함수를 사용할 수 있도록 하기
}
}
正しいコード
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 < 0.9.0;
contract guessRandomNumber{
uint public participants; // 현재 베팅한 사람 수
address private _owner; // 컨트렉트 주인
address[] addresses; // 참여한 사람들의 주소 저장
mapping (address => uint256) addressToGuesses; // 참여한 사람들의 주소와 베팅한 값 연결
event randomNumber(uint random); // 랜덤 숫자가 생성 되면 이벤트 발생
constructor() {
// 처음 디플로이 한 사람의 주소를 주인으로 설정
}
function betNumber(uint256 _bet) public {
// 베팅한 수는 1부터 10인 숫자만 가능
// 현재 함수를 호출한 주소를 저장하고, 베팅한 값을 매핑에 저장
// 참여자 수 증가시키기
}
function closest2Random(string memory _random) public onlyOwner returns(address) {
// 참여자가 한명보다 많아야 실행 가능
// 받은 문자열로 1-10의 랜덤 정수 생성, 이벤트 발생시키기
// 참여자 수를 다시 0으로 만들기
// 랜덤 정수로 제일 근접하게 맞춘 참여자를 찾고 리턴하기
}
modifier onlyOwner() {
// 주인만 함수를 사용할 수 있도록 하기
}
}
Reference
この問題について([エンティティの例]乱数フィッティング), 我々は、より多くの情報をここで見つけました https://velog.io/@bbangsil20/솔리디티-예제-랜덤-숫자-맞추기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol