我需要生成一組唯一座標(A1,B1)和(A2,B2),其值介於0和1之間。唯一座標不能位於由sql查詢返回的現有座標集([x1],[y1])和([x2],[y2])之間。我如何使用C#編寫腳本來生成座標:1)不在查詢返回的值之間,2)不等於查詢返回的值?生成沒有重複且不在一組現有座標之間的隨機座標C#
這裏的邏輯基本上用來在頁面上繪製一組框。我需要繪製具有唯一座標的新框,但這些新框不能重疊,或者位於現有框內。任何幫助是極大的讚賞!
我需要生成一組唯一座標(A1,B1)和(A2,B2),其值介於0和1之間。唯一座標不能位於由sql查詢返回的現有座標集([x1],[y1])和([x2],[y2])之間。我如何使用C#編寫腳本來生成座標:1)不在查詢返回的值之間,2)不等於查詢返回的值?生成沒有重複且不在一組現有座標之間的隨機座標C#
這裏的邏輯基本上用來在頁面上繪製一組框。我需要繪製具有唯一座標的新框,但這些新框不能重疊,或者位於現有框內。任何幫助是極大的讚賞!
這個工程的約99.99%左右...
void GenerateTest()
{
float x1, y1;
float x2, y2;
// fill x1,y1,x2,y2
var r = new Random();
Func<float> next =() => (float)r.NextDouble();
var NotMatchingRect = RectangleF.FromLTRB(x1,y1,x2,y2);
var Coordinates = Enumerable.Range(0, 1000).Select(i => new PointF(next(), next())).Where(p => !NotMatchingRect.Contains(p)).Distinct().Take(2).ToArray();
if (Coordinates.Length != 2)
throw new IndexOutOfRangeException();
}
如何集成我的查詢:從表 中選擇不同的X1,Y1,X2,Y2 其中實例化= n和X1!= 0和Y1!= 0和X2!= 1和Y2!= 1 – user1639410
假設隨機的存在,隨機命名爲方便起見,你可以做...
do
{
A1 = randomizer.NextDouble();
B1 = randomizer.NextDouble();
} while(!((A1>=X1&&A1<=X2&&B1>=Y1&&B1<=Y2)||(A1>=X2&&A1<=X1&&B1>=Y2&&B1<=Y1)) //not inside other rectangle
do
{
A2 = randomizer.NextDouble();
B2 = randomizer.NextDouble();
}
while(!((A1==A2&&B1==B2)|| //not equal to other random coordinate
(A2>=X1&&A2<=X2&&B2>=Y1&&B2<=Y2)||
(A2>=X2&&A2<=X1&&B2>=Y2&&B2<=Y1)|| //not inside other rectangle
(A1<=X1&&A2>=X2&&B1<=Y1&&B2>=Y2)||
(A1<=X2&&A2>=X1&&B1<=Y2&&B2>=Y1)||
(A2<=X1&&A1>=X2&&B2<=Y1&&B1>=Y2)||
(A2<=X2&&A1>=X1&&B2<=Y2&&B1>=Y1)||)) //not containing other rectangle
這是一個有點(讀:非常非常)cludgy(我實際上有點尷尬),但它應該工作,並最終生成所有可能的隨機矩形。
我已經有類似的東西了,我想我遇到的問題是參數化while語句, SQL datareader結果到C#。 X1,Y1,X2,Y2都是查詢返回的列名。即如果X1 = {2,4,6} Y1 = {1,3,5} X2 = {3,5,8},Y2 = {2,4,6}。我的x1_rand和x2_rand不能在{2,3} U {4,5} U {6,8}之間,我的y1_rand和y2_rand不能在{1,2} U {3,4} U {5,6} – user1639410
之間那麼,你可以使用任何數量的東西。如果您已經使用SQLDataReader,最簡單的方法可能是設置一個字典。在這裏,這更詳細http://stackoverflow.com/a/1504989/1623719 – Sconibulus
感謝您的幫助! – user1639410
您是否嘗試過使用'> ='和'<='? – dtb
箱子都是一樣的大小,還是隨機的呢? – ja72
框的大小是隨機的,只要它不與現有框重疊 – user1639410