C# winApp สุ่มค่าเพื่อให้ได้แบบที่ต้องการ ต้องทำยังไง ครับ
จากรูปถ้าผมจะเปลี่ยนให้ผลลัพท์ที่ได้เป็๋นจำนวนเต็มโดยไม่ใช้ loop จะมีวิธีคิดยังไง ครับ
พอดีใช้ loop แล้ว พอเราสั่งปริ้นหลายๆหน้ามันช้า ครับ
อย่างตัวอย่าง ค่าที่ได้เป็น 15*100/37 = 40.54054054
ถ้าใช้ loop บวกไปทีละ 1 มันจะได้ว่าต้องเปลี่ยนจาก 37 เป็น 50 ครับ
โค้ด
Code (C#)
NumP = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100 };
#region _Draw Detail
// System.Windows.Forms.MessageBox.Show("page " + iPage);
int yC = 120, xC = 60;
int w = 100, h = 40;
for (int i = 0; i < 6; i++)
{
int a = RandomNumberGenerator.GetInt32(1, 50);
int b = a * 100/NumP[RandomNumberGenerator.GetInt32(0, NumP.Count - 1)];
/* int b = a * 100 / RandomNumberGenerator.GetInt32(1, 100);//a * Nums[RandomNumberGenerator.GetInt32(0, Nums.Count - 1)];
do {
b++;
} while (((Convert.ToDouble(a) * Convert.ToDouble(100) / Convert.ToDouble(b))%1)!=0);*/
if (rd_1.Checked)
{
string _a = a.ToString(), _b = b.ToString();
e.Graphics.DrawFraction(_a, _b, xC + 10, yC);
e.Graphics.DrawString(" = ", new Font("Angsana New", 20), new SolidBrush(Color.Black), xC + 110, yC + 15);
e.Graphics.DrawFraction("Y", "100", xC + 110, yC);
}
else
{
if (RandomNumberGenerator.GetInt32(1, 1000) > 500)
{
e.Graphics.DrawString($"{a} คิดเป็นร้อยละเท่าใด\nของ {b}", new Font("Angsana New", 20), new SolidBrush(Color.Black), xC + 10, yC);
}
else
{
e.Graphics.DrawString($"ร้อยละ {a} ของ{b} \nเป็นเท่าใด", new Font("Angsana New", 20), new SolidBrush(Color.Black), xC + 10, yC);
}
}
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), xC + 250, yC + 25, 700, yC + 25);
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), xC + 250, yC + 55, 700, yC + 55);
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), xC + 250, yC + 85, 700, yC + 85);
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), xC + 250, yC + 115, 700, yC + 115);
yC += 150;
}
#endregion
Tag : .NET, Win (Windows App), C#
Date :
2022-09-24 09:53:16
By :
lamaka.tor
View :
616
Reply :
7
ถ้าเน้นเร็ว ต้องลดภาระการสุ่ม เพราะสุ่มจะกินเวลานาน
โดยสร้างเป็น Data แล้วเรียกมาแสดงโดยตรงเลยครับ
สุ่มแค่เลขกรณีครั้งเดียว
สมมติทำไว้ 10,000 กรณีก็สุ่มแค่
min-10,000 แล้วนำเลขไปอ้างอิง index ของ Data
ซึ่ง Data อาจเก็บเป็น List ของ tuple
หรือเก็บใน Database
ส่วนวิธีการ gen data ก็ทำครั้งเดียว
โดยเข้าลูปธรรมดา หรือจะลากใน excel ก็ได้
Date :
2022-09-24 12:52:32
By :
009
https://sites.google.com/site/mathsmaticsbynissa/home/thvsdi-canwn-beuxng-tn/kar-har-lngtaw
ประวัติการแก้ไข 2022-09-24 23:23:11
Date :
2022-09-24 23:14:28
By :
Chaidhanan
ผมลอง gen เป็น tuple จาก 1-1,000
https://pastebin.com/ShkR2fAU
ข้อมูลอยู่ในรูปแบบนี้
(เศษ, ส่วน)
แค่นี้เด็กก็คิดไม่ออกแล้ว ถ้ายังไม่พอ gen 10,000 ก็จะได้ 42,000 รายการเท่านั้นที่หารลงตัว
ไม่เห็นตาลายเลยครับ
ส่วนข้อมูลด้านบนก็จับใส่ List (copy/paste)
ตอนสุ่มก็สุ่มแค่เลข index
หรือจะกังวลขนาดไฟล์จาก data...ไม่เลย ไม่เยอะขนาดนั้น
สุ่มจาก 1,000 ขนาด 51.78 KB
สุ่มจาก 10,000 ขนาด 517.8 KB
สุ่มจาก 100,000 ขนาด ประมาณ 5 MB เอง
ใช้ความรู้โปรแกรมมิ่ง มาช่วย gen ครับ ถ้าเลือกเองก็คงจะตาลายอย่างว่า
excel ก็ทำได้ ใส่สูตรแล้วลาก
ส่วนวิธีหารลงตัว ลองอ่านตำราฝรั่งหัวข้อ divisibility fraction
ก็พอช่วยลดการทำงานในลูปได้บ้างเล็กน้อย
สิ่งที่ฝืนธรรมชาติอย่าทำครับ เว้นแต่ต้องการความท้าทาย 555
Date :
2022-09-26 11:21:59
By :
009
Load balance : Server 01