일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Github
- string
- array
- Google Spreadsheet
- 파이썬
- PySpark
- Kotlin
- django
- PostgreSQL
- c#
- list
- Excel
- matplotlib
- SQL
- Tkinter
- GIT
- Python
- numpy
- gas
- Redshift
- PANDAS
- hive
- Mac
- Apache
- math
- Google Excel
- dataframe
- Java
- google apps script
- Today
- Total
달나라 노트
C# : Random, Next, NextDouble (랜덤한 수 추출, 난수 추출, 특정 범위 안의 랜덤한 정수 추출) 본문
C# : Random, Next, NextDouble (랜덤한 수 추출, 난수 추출, 특정 범위 안의 랜덤한 정수 추출)
CosmosProject 2022. 4. 18. 19:20
Random class는 랜덤한 수를 추출할 때 사용합니다.
Random 객체를 생성한 후 Random 객체의 Next method를 이용하면 난수를 추출할 수 있습니다.
Random 객체에서 사용할 수 있는 난수 생성 method는 아래와 같습니다.
Next(a) -> 0 이상이고, a 미만인 범위에 존재하는 랜덤한 정수를 return합니다.
Next(a, b) -> a 이상이고, b 미만인 범위에 존재하는 랜덤한 정수를 return합니다.
NextDouble() -> 0이상 1 미만인 구간에 존재하는 랜덤한 실수를 return합니다.
아래 코드를 봅시다.
using System;
class MyProgram
{
public static void Main()
{
Random rand = new Random();
int random_number = rand.Next(100);
Console.WriteLine(random_number);
}
}
-- Result
65
위 코드는 0 이상, 100 미만 구간에 있는 랜덤한 정수 하나를 추출하는 코드입니다.
Random rand = new Random();
int random_number = rand.Next(100);
위처럼 Random class를 이용해서 객체를 생성합니다.
그리고 생성한 rand 객체의 Next() method를 이용합니다.
Next() method는 0 이상, 주어진 인자 미만의 구간에 있는 정수 중 랜덤한 정수 하나를 return합니다.
using System;
class MyProgram
{
public static void Main()
{
Random rand = new Random();
int random_number = rand.Next(-1000, 100);
Console.WriteLine(random_number);
}
}
-- Result
-324
Next(-1000, 100)은 -1000 이상 100 미만인 구간에 존재하는 랜덤한 정수를 return합니다.
using System;
class MyProgram
{
public static void Main()
{
Random rand = new Random();
double random_number = rand.NextDouble();
Console.WriteLine(random_number);
}
}
-- Result
0.885828566218646
NextDouble() method는 위처럼 0 이상 1 미만 구간에 존재하는 랜덤한 실수를 return합니다.
Random을 이용한 예시입니다.
Random을 이용해서 Window를 클릭할 때 마다 랜덤한 위치에 점이 찍히도록 하였습니다.
using System;
using System.Windows.Forms;
using System.Drawing;
class MyProgram
{
public static void Main()
{
Form fm = new Form();
fm.Width = 500;
fm.Height = 300;
int val_padding = 50;
Random random = new Random();
int x = random.Next(val_padding, fm.Width - val_padding);
int y = random.Next(val_padding, fm.Height - val_padding);
Label lbl = new Label();
lbl.Parent = fm;
lbl.Width = 200;
lbl.Height = 20;
lbl.Text = $"X = {x}, Y = {y}";
void fm_paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen pen = new Pen(Color.Black, 5);
g.DrawEllipse(pen, x, y, 10, 10);
}
fm.Paint += new PaintEventHandler(fm_paint);
void fm_click(object sender, EventArgs e)
{
x = random.Next(val_padding, fm.Width - val_padding);
y = random.Next(val_padding, fm.Height - val_padding);
lbl.Text = $"X = {x}, Y = {y}";
fm.Invalidate();
}
fm.Click += new EventHandler(fm_click);
Application.Run(fm);
}
}
'C# > C#' 카테고리의 다른 글
C# : Math.Max, Math.Min (최대값, 최소값) (0) | 2022.04.18 |
---|---|
C# : Math.Abs (절대값) (0) | 2022.04.18 |
C# : Clipping (Clip, GraphicsPath) (0) | 2022.04.15 |
C# : List (0) | 2022.04.11 |
C# : DrawEllipse, Pen (타원 그리기, 그림 그리기, 도형 그리기) (0) | 2022.04.08 |