가장 간단한 로또 번호 만들기 C#코드는 어떤 모습일까요?
(이 코드보다 더 간단한 코드를 알고 계신 분은 댓글로 알려주세요!)
var result = Enumerable.Range(1, 45)
.OrderBy(_ => Random.Shared.Next())
.Take(7).ToArray();
var nums = result.Take(6).OrderBy(x => x);
var bonus = result.Last();
Print(nums);
Print(bonus);
void Print(object target)
{
var text = System.Text.Json.JsonSerializer.Serialize(target);
Console.WriteLine(text);
}
| 출력
[16,21,29,31,38,41]
30
로또 번호는 1부터 45의 숫자 중 총 6개의 번호와 보너스 번호(총 7개 번호)를 랜덤으로 뽑은 결과입니다. 이를 짧은 코드로 구현하기 위해 OrderBy()
LINQ 메서드를 이용하여 정렬 기준을 랜덤으로 줘 되려 랜덤으로 섞는 결과를 얻습니다.
6개의 좋아요
킹희재
9월 11, 2022, 11:24오전
2
Enumerable.Range(1, 45)
.OrderBy(_ => Random.Shared.Next())
.Take(7).Chunk(6)
.Select(nums => $"[{string.Join(",", nums.OrderBy(p => p))}]")
.ToList().ForEach(Console.WriteLine);
| 출력
[9,12,13,14,38,42]
[8]
본문과 비슷하긴한데 Chunk로 두개로 나눈다음에 바로 출력했습니다.
8개의 좋아요
저도 디모이님 본문 가져와서 재탕 해봤습니다!
var numbers = from num in Enumerable.Range(1, 45)
orderby Random.Shared.Next()
select num;
Print(numbers.Take(6).OrderBy(x => x));
Print(numbers.Last());
void Print(object target)
{
var text = System.Text.Json.JsonSerializer.Serialize(target);
Console.WriteLine(text);
}
결과
[4, 7, 23, 41, 42, 44]
13
로또 한번 사볼까요~ ㅎㅎ
4개의 좋아요
@james.lee 1등 번호 감사합니다… 냠냠
3개의 좋아요
굳이 랜덤 관련 클래스를 이용할 필요가 있을까 해서 이렇게 해보았습니다.
var nums = Enumerable.Range(1, 45)
.OrderBy(x => Guid.NewGuid()).Take(6);
// 출력하기
nums.OrderBy(x => x).ToList().ForEach(item => Console.WriteLine(item));
출력
11
25
34
35
44
45
8개의 좋아요